私はバイナリ実行可能ファイルを「通知」型サービスとして実行するシステムサービスファイルを使用しています。実行ファイルはC言語APIsd_notify
機能を使用してsystemdウォッチドッグに「ping」を送信します。ただし、実行可能ファイルをbashスクリプトにラップする必要があります。
私が経験している問題は、systemdがラッピングされたバイナリではなくラッパースクリプトに属する「マスターpid」でのみウォッチドッグpingを許可するため、ウォッチドッグpingが拒否されることです。これらのpingを受け入れる必要があることをsystemdに通知する方法はありますか?
答え1
ラッパースクリプトexec
をサブファイルとして実行するのではなく、デフォルトのバイナリに設定します。スクリプトはデフォルトの実行可能ファイルに置き換えられ、同じPIDを保持します。
(スクリプトが何かをする必要がある場合後ろにバイナリ終了 - systemdに入るExecStartPost=
か、ExecStopPost=
代わりに入る必要があります。 )
NotifyAccess=
通知ソケットがcgroup内のすべてのプロセスにアクセスできるようにすることを含むいくつかの選択肢がありますが、主に正しいプロセスを追跡しない「マスターPID」の実際の問題を解決します。