python – 缺少DBus .service文件

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

[D-Bus Service]
Name=com.mycompany.servicename
Exec=/home/myuser/Workspace/service-start
User=myuser

在这里,我刚刚更改了服务和可执行文件的实际名称,但这不是重点.我已经仔细检查了真实姓名 – 它完全匹配.
我已将此文件名称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')

我得到dbus.exceptions.DBusException:org.freedesktop.DBus.Error.ServiceUnknown:任何.service文件都没有提供名称com.mycompany.servicename

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

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

最佳答案 以下是评论的简短摘要……

XDG Base Directory Specification中指定的一个目录中创建子目录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

请注意,[D-BUS服务]中的D-BUS需要大写.

而已!

点赞