通过 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)。

第三个参数是一个布尔值,控制是否应在必要时替换指向其他单元的符号链接。