无法从 ubuntu 中的服务连接到会话 dbus
Posted
技术标签:
【中文标题】无法从 ubuntu 中的服务连接到会话 dbus【英文标题】:not able to connect to session dbus from service in ubuntu 【发布时间】:2018-12-07 02:25:34 【问题描述】:我必须在 ubuntu 16.04 中将我的应用程序作为服务运行。我正在使用 systemd 使其在启动时作为服务运行。我的应用程序必须连接到会话 dbus 和系统 dbus。
连接系统dbus成功。但是连接到会话 dbus 失败了。
我尝试使用“systemctl start Myapplication”将我的应用程序作为服务运行,这一次它也没有连接到会话总线。
但是,如果我通过 "./Myapplication"
从终端运行我的应用程序,它会成功连接到会话和系统 dbus。
谁能帮我解决这个问题?
以下代码是我的 .service 文件内容。
[Unit]
Description=node-health-monitor to observe system health
[Service]
Type=notify
ExecStart=/home/deepan/deepan/Myapplication
[Install]
WantedBy=graphical.target
我正在使用GDBUS
。
【问题讨论】:
不清楚是什么错误或问题。也许你应该把事情减少到Minimal, Complete, and Verifiable example。请务必包含您的 D-Bus 代码。 【参考方案1】:将其设置为用户服务(因此它可以作为systemctl --user start Myapplication
运行)。
或者继续将其用作系统范围的服务,但在连接到会话总线时以某种方式在 Myapplication 中切换用户。
我认为导致问题的原因:
systemctl start Myapplication
时,Myapplication 以 root 用户身份运行。
因此,当它尝试连接到会话总线时,它正在尝试连接到 root 用户的会话。
【讨论】:
其实我只想连接到根的会话总线。在帖子中我提到了“./MyApplication”,但我只以 root 用户身份执行了命令。我不清楚为什么它没有连接到根会话总线。能否请您向我澄清一下。以上是关于无法从 ubuntu 中的服务连接到会话 dbus的主要内容,如果未能解决你的问题,请参考以下文章