「systemctlを無効にする」を使用せずにサービスを無効にする方法

「systemctlを無効にする」を使用せずにサービスを無効にする方法

他のサービスが失敗した場合にのみ()を実行したいが、起動時にその[Unit] OnFailure=fooサービス()が自動的に起動したくないサービスがあります。foo1つのオプションが実行されており、systemctl disable foo別の方法を探しています。

systemctl disable foo背景:OSイメージを作成していますが、コンピュータを起動してコマンド()を実行してから、イメージを最終宣言する前にシャットダウンしたくありません。

答え1

systemctl enable/etc/systemd/system/(システムデーモン用)シンボリックリンクを操作して動作します。サービスを使用すると、そのセクションの行をenable確認し、そのディレクトリにシンボリックリンクを追加します。WantedBy[Install].wants

systemctl disableその逆は本当です。

これらのシンボリックリンクを直接削除できます。手動で削除することはを使用するのとまったく同じですsystemctl disable

答え2

すべてのサービスはデフォルトで「無効」になっており、「有効」はオプションです。

カスタムサービスの場合、foo.serviceディレクティブなどを介して明示的にインポートされない限り開始されず、OnFailure=何も「無効」にしてはいけません。

答え3

systemctl start ServiceName.serviceとをそれぞれ使用してsystemctl stop Service.Name.serviceサービスを開始および停止できます。systemctl enable ...とは異なり、開始およびsystemctl disable ...停止コマンドは現在のセッション中のみ持続するため、コンピュータを再起動しても変更は保存されません。

答え4

ブロックとブロック解除のオプションもありますが、これは私以外の経験や知識を持つ人が説明する必要があります。

sudo systemctl マスクマスクサービス
sudo systemctlのブロック解除サービスのブロック解除

これが正しいことを願っています。ただし、完成度を高めるために、これらの内容をこの会話に含める必要があります。

マスキングは転送を使用しますが、/dev/nullこれはかなり良いです。

私の記憶が正しい場合は、同じセッションでサービスを停止、無効化、およびブロックできます。

関連情報