システムサービスがクラッシュまたは再起動したときに信号を受信できますか?

システムサービスがクラッシュまたは再起動したときに信号を受信できますか?

これはsystemdサービスに関する初心者の質問ですが、2つのsystemdデーモンがあると仮定すると、その1つが他のデーモンがクラッシュしたか再起動したかどうかを知ることが重要です。このイベントを聴くことはできますか?それでは、どうやって聞くことができますか?

答え1

私は通常、一般的なIPCを使用しています。 2つのプロセス間でメモリまたはソケットを直接共有します。

プログラムがCで書かれている場合は、systemdを使用できます#include <systemd/sd-bus.h>。これはsystemdのdbusインターフェースを囲むラッパーです。ここで単位を監視できます。プロパティが変更されるたびにエクスポートされるユニットの「PropertiesChanged」メンバーを購読できます。このシグナルが変更されると、「ActiveState」メンバーを照会します。

良い例は次のとおりです。

https://unix.stackexchange.com/a/527350/272848

関連情報