Запуск службы systemd через python

есть ли способ запустить / перезапустить службу systemd через python?

Я знаю, что могу сделать системный вызов, но тогда я также могу написать это в сценарии оболочки...

from subprocess import call
call(["systemctl", "restart service"])

Я слышал, что systemd имеет некоторые привязки python, но, насколько я видел, они охватывают только журнал

1 ответов


вы можете использовать systemd это DBus API вызов RestartUnit метод Manager (нужны достаточные привилегии, иначе это не сработает)

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('sshd.service', 'fail')