根据Starting a systemd service via python,我可以使用D-Bus API来启动/停止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('sshd.service', 'fail')
但是,如果我想在那里启用systemd服务,该怎么办?我已经尝试用RestartUnit
替换EnableUnit
,但是得到了:
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.UnknownMethod: Unknown method EnableUnit or interface org.freedesktop.systemd1.Manager.
答案 0 :(得分:1)
好。我想通了,这要归功于Terry Spotts。
job = manager.EnableUnitFiles(['ssh.service'], False, True)
manager.Reload()
第一个参数是系统单位文件名称的列表。
第二个参数是一个布尔值,用于控制该单元是应仅在运行时启用(true,/ run)还是在持久状态(false,/ etc)启用。
第三个参数是一个布尔值,用于控制是否在必要时替换指向其他单元的符号链接。