【问题标题】:Can't see my dbus object when program run from systemctl service从 systemctl 服务运行程序时看不到我的 dbus 对象
【发布时间】:2022-01-03 23:37:03
【问题描述】:

我有一个 cpp 应用程序,它在 dbus 上广播一个对象及其方法。我尝试在启动时使用以下服务文件运行该程序:

[Unit]
Description=Running dbus program
After=network.target

[Service]
Type=simple
ExecStart=/home/my_name/Documents/dbus/build/my_app
StandardOutput=console+journal
StandardError=console+journal

[Install]
WantedBy=multi-user.target

重新加载后:

systemctl daemon-reload

并运行它:

sudo systemctl start my_service.service

我在日志中没有错误,但我在 dbus 上看不到任何东西(运行 d-feet,浏览我的对象,我什么都找不到)

运行完全相同的 ExecStart:

/home/my_name/Documents/dbus/build/my_app

在控制台中工作正常。

我错过了什么?谢谢!

【问题讨论】:

  • 输入service my_service status会得到什么报告?
  • @ukBaz 我知道我的服务已加载并处于活动状态(正在运行),并且我得到了我应该得到的正确打印输出。但还是什么都看不到。
  • 假设您将服务发布到会话总线上是否正确?关于如何在正确的会话总线上获取服务的几个解决方案的链接:serverfault.com/a/906224 和 unix.stackexchange.com/a/83409
  • @ukBaz 感谢您的领导。事实上,我正在会话总线上运行它。好吧,你分享的内容让我的理解更加复杂,我需要一些时间来消化它!
  • 我知道我之前回答过systemd和session bus...stackoverflow.com/a/69432686/7721752

标签: service dbus systemctl


【解决方案1】:

由于您希望服务在 session 总线上运行,您需要使用:

sudo systemctl --user start my_service.service

将文件放入/etc/systemd/user/ 位置后,仍可供所有用户使用。

【讨论】:

    猜你喜欢
    • 2015-04-12
    • 2019-09-10
    • 2012-03-03
    • 2020-10-22
    • 1970-01-01
    • 2021-01-28
    • 2017-02-23
    • 2018-01-01
    • 1970-01-01
    相关资源
    最近更新 更多