我正在尝试在客户端程序启动时自动启动DBus服务。我已经设置了一个.service文件,但它没有用。
我的服务名称是
org.fandingo.PMP
我使用带有
的python服务器注册名称 name = dbus.service.BusName('org.fandingo.PMP', session_bus)
object = PMPService(session_bus, '/PMPService', PMPProxy())
如果我从客户端
手动运行服务器代码,我可以连接到这个罚款remote = bus.get_object('org.fandingo.PMP', '/PMPService')
因此,如果手动调用,服务器和客户端都可以工作。如果我只是尝试客户端,我会得到以下Python异常
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.ServiceUnknown: The name org.fandingo.PMP was not provided by any .service files
这是我的.service文件
-rw-r--r--. root root unconfined_u:object_r:usr_t:s0 /usr/share/dbus-1/services/org.fandingo.PMP.service
这些权限和SELinux标签与其他.service文件相同。
.service文件内容
[D-Bus Service]
Name=org.fandingo.PMP
Exec=/home/fandingo/code/python/pmp/src/pmpserver.py
User=fandingo
pmpserver.py是可执行的,并且具有正确的shebang。
有没有人发现我配置有任何问题?
谢谢,
答案 0 :(得分:1)
最后想出了这个。
我不确定.service文件是如何执行的,但是他们没有正确设置/ bin / env。
我的shebang工作不正常:
#!/usr/bin/env python
我将服务文件更改为
[D-Bus Service]
Name=org.fandingo.PMP
Exec=python /home/fandingo/code/python/pmp/src/pmpserver.py
现在一切都很好。