Systemd BindsTo - サービスのクラッシュ後に再起動

Systemd BindsTo - サービスのクラッシュ後に再起動

私のシステムにはいくつかのシステムサービスがあります。これらのサービスがすべて実行されている限り、私のシステムは「実行中」と見なされますa.servicez.service

このステータスは、デバイスステータスLEDのどこかに表示する必要があります。そのために、私は次のことsystem-status.serviceを行う別のシステムサービスを使用することを考えました。

  • すべてのサービスがactive実行中としてマークされている場合
  • サービスがクラッシュ/停止すると、そのサービスが実行されていないことを示します。

この不完全なコードスニペットを使用すると、system-status.service次のいずれかの場合を除いて正常に動作します。

[Unit]
BindsTo=a.service
BindsTo=b.service
...

After=a.service
After=b.service 
...

[Service]
ExecStart=/usr/bin/indicate-running.sh
ExecStop=/usr/bin/indicate-stopped.sh

しかし、a.serviceラインが含まれてクラッシュRestart=alwaysが発生するとa.service(シミュレーションを通じてkill -9)、a.service再起動は成功しますsystem-status.serviceが失敗します!

kill -9 <a.pid>

どんなアイデアがありますか?ありがとうございます!

ベストアンサー1

必要なのはWants=system-status.serviceとの関係です。これら2つのサービスのオーバーライドを追加したくない場合は、インストールセクションに逆関係を追加する必要があります。a.serviceb.servicesystem-status.service

...

[Install]
WantedBy=a.service
WantedBy=b.service

このセクションを適用するにはsystemctl enable system-status.service再実行する必要があります。

おすすめ記事