如何从Python获得失败服务的systemctl结果?
如果systemd服务单元处于故障状态,systemctl状态将显示以下事实:如何从Python获得失败服务的systemctl结果?,python,systemd,Python,Systemd,如果systemd服务单元处于故障状态,systemctl状态将显示以下事实: # systemctl status myservice ● myservice.service - Important Crash Prone service (myservice) Loaded: loaded (/etc/systemd/system/myservice.service; enabled; vendor preset: disabled) Active
# systemctl status myservice
● myservice.service - Important Crash Prone service (myservice)
Loaded: loaded (/etc/systemd/system/myservice.service; enabled; vendor preset: disabled)
Active: failed (Result: start-limit) since Tue 2017-08-22 20:04:13 UTC; 3s ago
Process: 31108 ExecStart=/bin/myservice (code=dumped, signal=ABRT)
Main PID: 31108 (code=dumped, signal=ABRT)
我希望Python程序在不分叉systemctl
并尝试解析输出的情况下获取“Result:start limit”字段。其他字段(例如,Loaded、Active)可从Python dbus库获得
例如,以下代码获取ActiveState
属性,该属性由systemctl
在“Active:”(上面输出中的“failed”一词)之后显示
“结果”值似乎不是其他输出的属性。如果您查看处的文档,它解释了结果是服务单元对象的一部分(org.freedesktop.systemd1.Service
)
因此,我在您的代码中添加了以下内容:
if value == 'failed':
result_prop = 'Result'
result = myservice_proxy.Get('org.freedesktop.systemd1.Service',
result_prop,
dbus_interface='org.freedesktop.DBus.Properties')
print(result)
现在它工作得很好
if value == 'failed':
result_prop = 'Result'
result = myservice_proxy.Get('org.freedesktop.systemd1.Service',
result_prop,
dbus_interface='org.freedesktop.DBus.Properties')
print(result)