systemdサービス(サービス)が停止したときにsystemdサービスがシステムをシャットダウンする方法はありますか?


1

それぞれサービスを実行しているLinuxボックスはほとんどありません。これは、これらのマシンで実行される唯一の重要なプロセスです。ただし、サービスの内部状態の変更が原因で、サービス自体が正常に停止する場合があります。私が探しているのは、これが起こったときにシステム全体をシャットダウンする慣用的な方法です。基本的に、myserviceサービスが実行されなくなったときにsystemdがシステムを停止するようにします。

これを行う簡単な方法はありますか?

現時点で私がしていることは、システムmyservice-monitorを監視しmyservice、それがmyservice-monitor停止したときにシステムをシャットダウンする別のサービスを開発したことです。それはすべて動作しますが、私はより慣用的なアプローチでこれを解決する方法がなければならないと思いました...


サービスは「停止」や「OK」などのステータスを返しますか?はいの場合、ステータスを確認するスクリプトを作成し、応答が「停止」した場合にシステムをシャットダウンします。定期的なチェックにはルートcrontabを使用してください。
レニー

私はあなたの提案でcrontabジョブが正確に行うサービスを既に持っていることを言及するのを忘れました... systemd自体で行うことが可能であると思いました。systemdドキュメントを読む必要があります
...-DejanLekic

サービスが直接制御されている場合は、サービス自体の内部からシャットダウンを開始することもできます。
レニー

正しい方向を教えてください(@ systemd documentation)?私はそれを行う方法を見つけることができません
...-DejanLekic

申し訳ありませんが、サービスを自分で作成した場合は、サービスの正常終了時にシャットダウンをプログラムできます。編集:多分これを見てください:manpages.ubuntu.com/manpages/xenial/en/man8/…–
レニー

回答:


2

あなたはこれをsystemdで行いますが、それがどれほどお勧めかわかりません。アップグレード中にサービスがクラッシュしたり、再起動する必要がある場合、その場合もマシンはシャットダウンします!

これをsystemdサービスのユニットファイルファイルに追加できます。

 ExecStopPost=/sbin/halt

についてman systemd.serviceの完全なドキュメントと免責事項を参照してくださいExecStopPost


1
優れた!これだと思います。実際にマシンをシャットダウンする必要があります(実際terminated、AWSの用語でそれが必要です)。そのサービスのインスタンスをさらに実行したい場合は、より多くの新しいマシンを実行するからです。
-DejanLekic

一度テストすれば、きっとそうなります。
-DejanLekic

私は自分でこのパターンを使用することになります。わたしにはできる"。
マークストースバーグ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.