【问题标题】:Starting a systemd service via python通过 python 启动 systemd 服务
【发布时间】:2015-11-11 08:02:11
【问题描述】:

有没有办法通过 python 启动/重启 systemd 服务?

我知道我可以进行系统调用 - 但我也可以在 shell 脚本中编写它...

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

我听说 systemd 有一些 python 绑定,但据我所见,它们只涵盖期刊

【问题讨论】:

  • 所以您正在寻找 systemd 模块/包?
  • 我是吗?好吧,我想尽可能直接地与 systemd 交谈。如果有更直接的方法,我不想退出 python 环境并要求系统为我做这件事。是不是有某种 API,所以我可以和 systemd 对话?
  • 现在明白了,run systemd command more pythonic。 :P
  • 我找到了this project,有用吗?
  • Systemd 还有一个DBus API

标签: python systemd


【解决方案1】:

可以使用systemd的DBus API调用ManagerRestartUnit方法(需要足够的权限,否则不起作用)

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-06-24
  • 1970-01-01
  • 2015-08-26
  • 2015-01-01
  • 2022-07-08
  • 2021-01-08
  • 2015-11-17
  • 2015-06-13
相关资源
最近更新 更多