システムデバイスの状態をグローバルに監視する方法は?

システムデバイスの状態をグローバルに監視する方法は?

私はデバイスエラーを監視し、グローバル電子メールを介して警告を送信するスクリプトを作成しようとしました(つまり、OnFailure=監視したいすべてのデバイスではない場合)。

ドキュメントでは、私はJobRemoved仕事のために私が探しているのと同じ音を出すD-Bus信号を見つけました。具体的には、Type=simpleサブプロセスが作成されるとすぐに終了するのをJobRemoved待たずにそのユニットが実行されることを意味します。

デバイスの状態変化をグローバルに監視する同様の信号がありますか?

(これは私の現在の試みです:協会)

答え1

に接続することができますプロパティが変更されました。各セルの属性が変更されるたびに信号が放出されます。財産アクティブ状態

デバイスが現在アクティブであるかどうかを反映するステータス値を含みます。現在定義されている状態は、アクティブ、リロード、非アクティブ、失敗、有効、無効です。 activeは、デバイスがアクティブであることを意味します(明らかに...)。リロードは、デバイスがアクティブであり、現在の設定をリロードしていることを示します。非アクティブとは、非アクティブであり、以前の実行が成功したか、以前の実行がまだ発生していないことを意味します。 failed は、そのジョブが非アクティブであり、以前の実行が失敗したことを意味します(これについての詳細は、結果属性のサービスなど、デバイスタイプ固有のインターフェイスにあります。以下を参照)。アクティブとは、そのデバイスが以前に非アクティブであったが、現在アクティブであることを意味します。これとは対照的に、無効化は、デバイスが現在無効になっているプロセスにあることを示します。

(からsystemddbus ドキュメント)。

初期デバイスのリストを取得するには、このListUnits方法を使用してデバイスが追加/削除されたときに通知を受けるようにシグナルをUnitNew購読できます。UnitRemoved

以下を含む、すでに使用している既存のプロジェクトがいくつかあります。システム監視プログラムそしてサグベシェード

関連情報