0

我必须在 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.

4

1 回答 1

0

将其设置为用户服务(因此它可以作为 运行systemctl --user start Myapplication)。

或者继续将其用作系统范围的服务,但在连接到会话总线时以某种方式在 Myapplication 中切换用户。


我认为导致问题的原因:

Myapplication 在执行时以 root 用户身份运行systemctl start Myapplication

因此,当它尝试连接到会话总线时,它正在尝试连接到 root 用户的会话。

于 2018-07-04T08:57:31.953 回答