Это можно использовать менеджер Systemd для управления услугами с помощью DBus, например: Starting a systemd service via python с помощью этого:Запуск пользователей Systemd службы с помощью питона и 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
флаг, например:
systemctl --user start test.service
Как можно использовать пользовательский менеджер из dbus (с помощью python)? Замена dbus.SystemBus()
с dbus.Bus()
или dbus.SessionBus()
не сделать трюк, так как это дает:
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.Spawn.ChildExited: Process org.freedesktop.systemd1 exited with status 1