DBus .service文件丢失

时间:2012-02-08 10:19:44

标签: python linux ubuntu dbus ubuntu-11.10

我正在为自己的需求构建自定义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: 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 个答案:

答案 0 :(得分:2)

这是评论的简短摘要......

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 Service]中的 D-BUS 需要大写。

那就是它!