2017-07-06 5 views
2

サービス単位のすべての状態の変更について通知したいと思います。私はUnitNewとUnitRemovedのシグナルを与えるDBUS APIがあることを知っていますが、意味はまだわかりません。また、信号は私が必要とする情報を提供しません。システムドサービスライフサイクルイベントの登録方法を教えてください。

私はgoを使用しており、coreosのgo-systemd libを試しました。彼らは「購読する」方法を提供しますが、実際にはシステムで利用可能なすべてのユニット情報をポーリングしています。私はステートチェンジについての情報を得るために数ミリ秒ごとにそうしたくありません。

また、デフォルトのorg.freedesktop.DBus.Propertiesを試しましたが、これを取得できません。

お手数ですがお手数ですが、私はアイデアがありません。サービスユニットの開始や停止に関する情報が含まれてい

答えて

0

systemd APIsは以下のとおりです。

  • にsystemdジャーナル。 journalctlを実行するか、ネットワーク経由でプログラムに転送したり、ディスク上のファイルの変更を監視したりすることで、聴くことができます。例:journalctl --follow -o json-pretty _PID=1を実行します(UNIT=gdm.serviceなどのさまざまなフィルタを追加して1つのサービスのフィルタのみを取得できます)。systemd journal json output formatに従ってstdoutを解析し、systemdのジャーナルメッセージを取得します。 MESSAGE_IDを使用して、イベントが意味するものと一致させ、未知のメッセージが新しいメッセージで置き換えられたことを知るようにします。これは十分に機能するかもしれませんが、ログメッセージは主にAPIとして意図されていません。したがって、以下のオプションを使用することをお勧めします。

  • Linux cgroup notificationsサービスを開始するときにsystemd uses cgroupsが生成されると発生します。 (Wants=など)、それらの依存関係

介し

  • systemd units

  • 関連する問題