systemd は、クラッシュ後にのみ自動的にサービスを再起動します。

systemd は、クラッシュ後にのみ自動的にサービスを再起動します。

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=

関連情報