2011-10-16 9 views
4

클라이언트 프로그램 시작시 DBus 서비스를 자동 시작하려고합니다. .service 파일을 설정했지만 작동하지 않습니다.. 서비스 파일 D 버스

내 서비스 이름은 내가 수동으로 클라이언트에서 다음으로 서버 코드를 실행하는 경우

org.fandingo.PMP 

은 내가이 잘 연결할 수

name = dbus.service.BusName('org.fandingo.PMP', session_bus) 
object = PMPService(session_bus, '/PMPService', PMPProxy()) 

와 파이썬 서버 이름을 등록 할 것입니다

remote = bus.get_object('org.fandingo.PMP', '/PMPService') 

그래서 서버와 클라이언트는 수동으로 호출되는 경우 모두 작동합니다. 난 그냥 클라이언트를하려고하면, 나는 다음과 같은 파이썬 예외를

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는 실행 가능하고 올바른 오두막이있다.

누구나 저의 구성에 문제가 있습니까?

감사합니다.

답변

1

마지막으로 알아 냈습니다.

정확하게 .service 파일이 실행되는 방법은 확실하지 않지만/bin/env가 제대로 설정되지 않습니다.

내 오두막이 제대로 작동하지 않는 :

#!/usr/bin/env python 

나는

내 서비스 파일을 변경
[D-Bus Service] 
Name=org.fandingo.PMP 
Exec=python /home/fandingo/code/python/pmp/src/pmpserver.py 

모든 것이 지금 잘 작동합니다.

+1

env의 더 일반적인 위치는/usr/bin에 있습니다. 적어도 리눅스에서는 그곳에 있습니다. –

관련 문제