systemctlはRestart = always準拠を中止する必要がありますか?

systemctlはRestart = always準拠を中止する必要がありますか?

"systemctl stop docker.service"を実行するときは、"Restart = always"に準拠する必要がありますか?

私の理解(そしてこれは限定的)は、systemctl stopが終了コード0で停止する必要があることです。その後、「Restart = always」が設定されているため、docker.serviceが再起動されることを期待しています。つまり、終了コードは何でも再起動する必要がありますが、これは起こらないようです。

systemctl stopは特別なケースですか?それでは、ステータスコード0でdockerdを終了して、「Restart = always」が正しく機能するかどうかをテストできますか?

ベストアンサー1

ご意見ありがとうございます。上記の内容(私の知識不足に基づいた最良の説明)を使って遊びながらの動作は次のとおりです。

  • 上記のEval / gdpスクリプトはdocker.serviceで動作するようです。 dockerd プロセスが終了して再起動します。プロセスが状態 0 で終了したことを示すメッセージは、/var/log/messages に書き込まれません。終了状態1を使用するようにスクリプトを変更すると、メッセージログファイルにstatus = 1として記録され、サービスも再起動されます。
  • SIGTERMはdocker.serviceも停止し、/var/log/messagesに終了コード状態を書き込むことなくプロセスを再起動するようにします。
  • systemctl stop docker.serviceが原因でプロセスが停止し、再起動されません。
  • systemctl stop systemd-udevdはプロセスを停止して再起動しないようにします。つまり、SIGSTOPのように動作します。

この最後の点は、STOPコマンドがrestart = alwaysをサポートするように設計されていないことを示すようです。

おすすめ記事