通过 python 启用 systemd 服务
Enable systemd service via python
根据 I can use D-Bus API 对于 starting/stopping 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 服务怎么办。我已经尝试用 EnableUnit
替换 RestartUnit
,但我得到:
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.UnknownMethod: Unknown method EnableUnit or interface org.freedesktop.systemd1.Manager.
好的。感谢 Terry Spotts,我弄明白了。
job = manager.EnableUnitFiles(['ssh.service'], False, True)
manager.Reload()
第一个参数是 systemd 单元文件名列表。
第二个参数是一个布尔值,控制该单元是仅在 运行 时间内启用(true,/运行),还是持续启用(false,/etc)。
第三个参数是一个布尔值,控制是否应在必要时替换指向其他单元的符号链接。
根据
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 服务怎么办。我已经尝试用 EnableUnit
替换 RestartUnit
,但我得到:
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.UnknownMethod: Unknown method EnableUnit or interface org.freedesktop.systemd1.Manager.
好的。感谢 Terry Spotts,我弄明白了。
job = manager.EnableUnitFiles(['ssh.service'], False, True)
manager.Reload()
第一个参数是 systemd 单元文件名列表。
第二个参数是一个布尔值,控制该单元是仅在 运行 时间内启用(true,/运行),还是持续启用(false,/etc)。
第三个参数是一个布尔值,控制是否应在必要时替换指向其他单元的符号链接。