[英]Starting a users systemd service via python and dbus
可以通過 dbus 使用 systemd 的管理器來控制服務,例如:使用以下命令通過 python 啟動 systemd 服務:
import dbus
sysbus = dbus.SystemBus()
systemd1 = sysbus.get_object('org.freedesktop.systemd1', '/org/freedesktop/systemd1')
manager = dbus.Interface(systemd1, 'org.freedesktop.systemd1.Manager')
job = manager.RestartUnit('test.service', 'fail')
但是,systemd 也可以使用--user
標志處理用戶的服務文件,例如:
systemctl --user start test.service
如何從 dbus(使用 python)使用用戶的管理器? 用dbus.Bus()
或dbus.SessionBus()
dbus.SystemBus()
沒有解決問題,因為這給出了:
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.Spawn.ChildExited: Process org.freedesktop.systemd1 exited with status 1
根據dbus-python 教程,dbus.SessionBus() 是連接到會話總線的正確方法
根據顯示的錯誤消息,我懷疑 dbus 和/或您的會話存在其他問題。 例如,當嘗試在沒有有效會話的情況下進行連接時,我得到一個略有不同的異常,org.freedesktop.DBus.Error.NotSupported
我會檢查 systemd 日志以獲取更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.