0を返さない場合にのみ、systemdにサービスを自動的に再起動させることはできますか?私が知る限り、適切なシャットダウンが発生すると、サービスは0を返します。たとえば、ユーザーが積極的にサービスを終了した場合(プログラムを閉じるなど)。手動でサービスを終了するときにサービスを再起動しないようにsystemdに指示したいと思います。それは可能ですか?
答え1
Restart=on-failure
はい、組織内で使用できますService
。
~からシステム文書(でも利用可能man 5 systemd.service
):
再開=
[...]
に設定すると、
on-failure
プロセスがゼロ以外の終了コードで終了するとサービスが再開され、タスク(サービスの再ロードなど)が発生したときに信号(コアダンプを含む、上記の4つの信号を除く)によって終了します。および設定された監視タイムアウトがトリガされる場合。 on-abnormalに設定すると、信号(コアダンプを含む、上記4つの信号を除く)によってプロセスが終了したり、作業がタイムアウトしたり、監視タイムアウトが発生した場合にサービスが再開されます。[...]
on-failure
長期間実行されるサービスの場合は、自動的にエラー回復を試みて信頼性を高めるように設定することをお勧めします。on-abnormal
もう1つのオプションは、自分で終了することを選択できるサービスのためのものです(即時再起動しない)。
systemctl stop
現在のプロセスを手動で終了するのではなく、明示的にsystemdにサービスを停止するように指示することで、すべての設定をバイパスできますRestart=
。