2017-02-07 12 views
0

を経由してユーザーにsystemdサービスを開始:Starting a systemd service via pythonこの使用:例えば、サービスを制御するためのdbus経由にsystemdのマネージャーを使用することが可能であるPythonとdbusの

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とユーザのサービスファイルを扱うことができますフラグ、例:

ユーザのマネージャは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 

答えて

2

dbus.SessionBus()でエラーに基づいてhttps://dbus.freedesktop.org/doc/dbus-python/doc/tutorial.txt

ごとに、セッション・バスに接続するための正しい方法であり、私はdbusやあなたのセッションに関するいくつかの他の問題を疑う。たとえば、有効なセッションなしで接続しようとすると、少し違う例外が発生します。org.freedesktop.DBus.Error.NotSupported

詳細については、システムログをチェックします。

関連する問題