Python経由でsystemdサービスを開始/再起動する方法はありますか?
システムコールをかけることができることは知っていますが、シェルスクリプトでこれを書くこともできます...
from subprocess import call
call(["systemctl", "restart service"])
Systemdにはいくつかのpythonバインドがあると聞きましたが、私が見た限りでは、それらはジャーナルのみをカバーしています
Systemdの DBus API を使用して、RestartUnit
のManager
メソッドを呼び出すことができます(十分な特権が必要です。そうでない場合は機能しません)
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')