ラッパーを介して実行可能ファイルを実行するシステムサービスは、ウォッチドッグに通知できません。

ラッパーを介して実行可能ファイルを実行するシステムサービスは、ウォッチドッグに通知できません。

私はバイナリ実行可能ファイルを「通知」型サービスとして実行するシステムサービスファイルを使用しています。実行ファイルはC言語APIsd_notify機能を使用してsystemdウォッチドッグに「ping」を送信します。ただし、実行可能ファイルをbashスクリプトにラップする必要があります。

私が経験している問題は、systemdがラッピングされたバイナリではなくラッパースクリプトに属する「マスターpid」でのみウォッチドッグpingを許可するため、ウォッチドッグpingが拒否されることです。これらのpingを受け入れる必要があることをsystemdに通知する方法はありますか?

答え1

ラッパースクリプトexecをサブファイルとして実行するのではなく、デフォルトのバイナリに設定します。スクリプトはデフォルトの実行可能ファイルに置き換えられ、同じPIDを保持します。

(スクリプトが何かをする必要がある場合後ろにバイナリ終了 - systemdに入るExecStartPost=か、ExecStopPost=代わりに入る必要があります。 )

NotifyAccess=通知ソケットがcgroup内のすべてのプロセスにアクセスできるようにすることを含むいくつかの選択肢がありますが、主に正しいプロセスを追跡しない「マスターPID」の実際の問題を解決します。

関連情報