systemd 服务未使用 dbus 接口启动

Posted

技术标签:

【中文标题】systemd 服务未使用 dbus 接口启动【英文标题】:systemd service not starting using dbus interface 【发布时间】:2015-07-15 03:36:02 【问题描述】:

我正在尝试启动 systemd 服务 usnig dbus 服务。我正在关注下面提到的链接的示例 5: http://www.freedesktop.org/software/systemd/man/systemd.service.html

我的 dbus 服务是:

[D-BUS Service]
Name=com.native.Test_Dbus_060
Exec=/usr/sbin/server_060
User=apps
StandardOutput=tty
TTYPath=/dev/ttyS0
SystemdService=com.native.Test_Dbus_060.service

我的 systemd com.native.Test_Dbus_060.service 是:

[Unit]
Description=dbus test server

[Service]
Type=dbus
BusName=com.native.Test_Dbus_060
ExecStart=/usr/sbin/server_060
StandardOutput=tty
TTYPath=/dev/ttyS0

[Install]

WantedBy=multi-user.target

现在,当我尝试通过在 dbus 中获取上述总线来激活 com.native.Test_Dbus_060.service 服务时,它没有启动。 server_060 和 client_060 都在为 IPC 使用 dbus API。

注意:我的 server_060 和 client_060 在没有 systemd 服务和 dbus 服务的情况下直接使用时可以正常通信。

我的第一个问题是,这种类型的 systemd 服务是否可以启动? 如果是,那为什么它在我的情况下不起作用?

【问题讨论】:

你看过wiki.archlinux.org/index.php/Systemd/User#D-Bus吗? 你解决了吗?我也有类似的问题。 【参考方案1】:

好吧,如果您仔细查看您引用的页面,您会注意到以下注释:

对于可激活总线的服务,不要在 systemd 服务文件中包含“[Install]”部分,而是在相应的 DBus 服务文件中使用 SystemdService= 选项,例如(/usr/share/dbus-1 /system-services/org.example.simple-dbus-service.service)

【讨论】:

以上是关于systemd 服务未使用 dbus 接口启动的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 python 和 dbus (systemd-run like) 创建 systemd 瞬态计时器和服务?

使用 gdbus 启动 systemd 服务

systemd 服务无法连接到会话 d-bus

linux启动流程systemd关闭服务的三个层次

与 SystemD 的 Linux DBus 远程 TCP 连接失败

如何通过 Systemd DBus API 提取服务状态?