简体   繁体   中英

Starting a systemd service via python

Is there a way to start/restart a systemd service via python?

I know that I can make a system call - but then I also could write this in shell script...

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

I heared systemd has some python binds, but as far as I saw it they only cover the journal

You can use systemd's DBus API to call the RestartUnit method of the Manager (need of sufficient privileges, else it won't work)

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM