DBus .service文件丢失

问题描述 投票:5回答:2

我正在建造定制 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]

python linux ubuntu dbus ubuntu-11.10
2个回答
3
投票

下面是简短的注释总结....

创建子目录 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] 需要大写。

就是这样!

© www.soinside.com 2019 - 2024. All rights reserved.