无法从 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的主要内容,如果未能解决你的问题,请参考以下文章

连接到不同计算机上的会话 DBus

dbus 如何重新连接到新的会话总线守护进程

dbus会话连接:用qt槽连接dbus信号,怎么做?

来自另一个用户的 DBus

无法从 Ubuntu 服务器上的外部站点连接到 phpMyAdmin

如何将 dbus 和 policykit 连接到我在 python 中的函数?