DBus .service 文件丢失

pss*_*pss 7 python linux ubuntu dbus ubuntu-11.10

我正在dbus根据自己的需求构建定制服务,并希望它在有人需要时自动启动。为此,我创建了这样的.service文件

[D-Bus Service]
Name=com.mycompany.servicename
Exec=/home/myuser/Workspace/service-start
User=myuser
Run Code Online (Sandbox Code Playgroud)

在这里,我只是更改了服务和可执行文件的实际名称,但这不是重点。我已经仔细检查过真实姓名 - 它完全匹配。我已将此文件放在名为 com.mycompany.servicename.service 的 /usr/share/dbus-1/services 文件夹中(我使用的是 Ubuntu 11.10)可执行文件x对每个人都有权限。这就是问题所在 - 当我尝试启动执行

bus = dbus.SessionBus()
bus.get_object('com.mycompany.servicename','/path/to/object')
Run Code Online (Sandbox Code Playgroud)

我得到 dbus.exceptions.DBusException: org.freedesktop.DBus.Error.ServiceUnknown: The name com.mycompany.servicename was not provided by any .service files

'/path/to/object'服务启动后立即注册带有路径的对象。我就是不明白为什么dbus找不到我的.service文件。也许我错过了什么?有任何想法吗?

编辑 我设法让 D-BUS 自动启动我的脚本。.service文件的部分应该被命名[D-BUS Service]而不是[D-Bus service]

mzu*_*her 4

以下是评论的简短摘要...

在XDG 基本目录规范dbus-1/services/中指定的目录之一中创建子目录。通常情况下,效果很好。进入新的子目录,创建一个名为的文件并添加以下行:~/.local/share/dbus-1/services/com.mycompany.servicename.service

[D-BUS Service]
Name=com.mycompany.servicename
Exec=/home/myuser/Workspace/service-start
User=myuser
Run Code Online (Sandbox Code Playgroud)

请注意,D-BUS[D-BUS Service]需要大写。

就是这样!

  • 这是否意味着 dbus-daemon 想要管理我的服务?(我希望自己*手动*启动我的应用程序,该应用程序将通过 dbus-python 在 dbus 上注册特定消息接口和对象路径。但我得到了“ServiceUnknown”异常。) (4认同)