我正在建造定制 dbus
服务来满足我自己的需求,并希望当有人需要时它能自动启动。为此,我创建了 .service
这样的文件
[D-Bus Service]
Name=com.mycompany.servicename
Exec=/home/myuser/Workspace/service-start
User=myuser
这里我只是改变了服务和可执行文件的实际名称,但这不是重点。我已经仔细检查了真实的名字--完全匹配。我已经把这个文件放在com.mycompany.servicename.service下,放到usrsharedbus-1services文件夹下(我使用Ubuntu 11.10)可执行文件的名字是--com.mycompany.servicename.service。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]
下面是简短的注释总结....
创建子目录 dbus-1/services/
中命名的某个目录中。XDG基本目录规范. 通常情况下: ~/.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]
需要大写。
就是这样!