有没有通过python启动/重新启动systemd服务的方法?
我知道我可以做一个系统调用,但是我也可以用shell脚本写这个…

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

我听说systemd有一些python绑定,但据我所见,它们只覆盖日志。

最佳答案

您可以使用systemd的DBus API来调用RestartUnitManager方法(需要足够的权限,否则将无法工作)

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')

10-06 05:19