我一直试图想出一个脚本来监视单元故障,并在全球范围内通过电子邮件发出警报(即在我想要监视的每个单元中不使用OnFailure= )。
在文档中,我找到了JobRemoved的D总线信号,听起来跟我想要的完全一样,只是为了找工作。特别是,这意味着Type=simple单元将在创建子进程时立即触发JobRemoved,而不会等待它结束。
是否有类似的信号来全局监控单元状态变化?
(这是我目前的尝试:链接)
发布于 2016-09-11 20:10:36
您可以连接到每个单元上的PropertiesChanged信号,只要单元的属性发生更改,就会发出该信号。属性ActiveState
包含一个状态值,该值反映当前单元是否处于活动状态。当前定义了以下状态:活动状态、重新加载状态、非活动状态、失败状态、激活状态、解除状态。active表示该单元处于活动状态(显然.)。重新加载表示该单元处于活动状态,目前正在重新加载其配置。非活动表示它是非活动的,并且上一次运行是成功的,或者还没有进行以前的运行。failed表示它是不活动的,而且上一次运行不成功(有关原因的更多信息在单元类型特定的接口上可用,例如,有关结果属性中的服务,请参见下面的内容)。激活表示该单位以前是不活动的,但目前正处于进入活动状态的过程中。反之,失活指示该单位目前正在失活过程中。
(来自系统dbus文档)。
要获得单元的初始列表,您可以使用ListUnits方法并订阅UnitNew和UnitRemoved信号,以便在添加/删除单元时得到通知。
有多个现有的项目已经使用了这一点,包括系统d_监视器和萨贝沙伊德。
https://unix.stackexchange.com/questions/309250
复制相似问题