Вы можете подключиться к сигналу PropertiesChanged на каждом модуле, который излучается всякий раз, когда свойство объекта изменяется. Свойство ActiveState
содержит значение состояния, которое отражает, активен ли модуль в данный момент или нет. В настоящее время определены следующие состояния: активно, перезагружается, неактивно, сбой, активируется, деактивируется. active указывает, что объект активен (очевидно ...). reloading указывает, что модуль активен и в настоящее время перезагружает свою конфигурацию. inactive указывает, что он неактивен и предыдущий запуск был успешным или предыдущий запуск еще не выполнялся. Ошибка указывает, что он неактивен, а предыдущий запуск не был успешным (дополнительная информация о причине этого доступна на интерфейсах, относящихся к конкретному типу модуля, например, для служб в свойстве Result, см. ниже). активация указывает на то, что устройство ранее было неактивным, но в настоящее время находится в процессе перехода в активное состояние. И наоборот, деактивация указывает на то, что устройство в настоящее время находится в процессе деактивации.
(из systemd dbus docs ).
Чтобы получить начальный список единиц, вы можете использовать метод ListUnits
и подписаться на сигналы UnitNew
и UnitRemoved
, чтобы получать уведомления при добавлении единиц. /удаленный.
Есть несколько существующих проектов, которые уже используют это, в том числе systemd_mon и sagbescheid .