サービスが特定のコード(終了コード0など)で終了したときにシステムを終了させる方法はありますか?

サービスが特定のコード(終了コード0など)で終了したときにシステムを終了させる方法はありますか?

私はそれぞれサービスを実行する複数のLinuxシステムを持っています。これは、これらのシステムで実行される唯一の重要なプロセスです。ただし、サービスの一部の内部状態の変更により、終了コード 0 で正常に停止することがあります。私が探しているのは、これが起こったときにシステム全体をシャットダウンする慣用的な方法です。デフォルトでは、myserviceがコード0で終了した場合、systemdはシステムを停止し、myserviceが0以外の結果コードで終了した場合はmyserviceを再起動したいと思います。

見つけることができるショートカットがありますか?

ベストアンサー1

/etc/systemd/system/my_unit.service:

[Unit]
...
...

[Service]
Type=oneshot
ExecStart=/usr/bin/your_program
ExecStartPost=/usr/bin/systemctl poweroff
RestartSec=5
Restart=on-failure

[Install]
...
...

これはとても簡単です。もう一つの興味深い変数はman systemd.serviceおよびですman systemd.unit

おすすめ記事