にsystemdサービスユニットが障害状態にある場合は、systemctlステータスは事実ことを示していますsystemctl
をフォークし、しようとせずにフィールド:Pythonから失敗したサービスのsystemctl Resultをどのように取得しますか?
# 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プログラムをしたいのですが、「起動制限を結果」というの取得出力を解析します。その他のフィールド(Loaded、Activeなど)は、Python dbusライブラリから利用できます。
たとえば、次のコードではsystemctl
で表示されるActiveState
のプロパティを取得します(上記の出力では「失敗」と表示されます)。
from dbus import Interface, SystemBus, SessionBus
bus = SystemBus()
systemd = bus.get_object('org.freedesktop.systemd1',
'/org/freedesktop/systemd1')
manager = Interface(systemd, dbus_interface='org.freedesktop.systemd1.Manager')
myservice_unit = manager.LoadUnit('myservice.service')
myservice_proxy = bus.get_object('org.freedesktop.systemd1', str(myservice_unit))
myservice = Interface(myservice_proxy,
dbus_interface='org.freedesktop.systemd1.Unit')
prop = 'ActiveState'
value = myservice_proxy.Get('org.freedesktop.systemd1.Unit',
prop,
dbus_interface='org.freedesktop.DBus.Properties')
print("{} is: {}".format(prop, value))
「結果」値は、他の出力の大部分が意味するプロパティではないようです。あなたはhttps://www.freedesktop.org/wiki/Software/systemd/dbus/でドキュメントをチェックすると