缺少DBus .service文件
我正在为自己的需求构建一个自定义的 dbus
服务,希望它在有人需要的时候能够自动启动。为此,我创建了一个 .service
文件,内容如下:
[D-Bus Service]
Name=com.mycompany.servicename
Exec=/home/myuser/Workspace/service-start
User=myuser
在这里,我只是更改了服务和可执行文件的实际名称,但这不是重点。我已经仔细检查过实际名称,完全一致。这个文件我放在了 /usr/share/dbus-1/services 文件夹下,命名为 com.mycompany.servicename.service(我使用的是 Ubuntu 11.10)。可执行文件对所有人都有 x
权限。
问题来了——当我尝试启动客户端执行以下操作时:
bus = dbus.SessionBus()
bus.get_object('com.mycompany.servicename','/path/to/object')
我收到的错误是 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]
。
1 个回答
这里是评论的简短总结……
在一个名为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
请注意,D-BUS在[D-BUS Service]
中需要大写。
就这样!