2012-02-08 10 views
4

私は自分の要求に応じてカスタムdbusサービスを構築しており、誰かが必要なときに自動的に開始したいと考えています。その目的のためにここで私はちょうどサービスと実行可能ファイルの実際の名前を変更し、私はこのDBusの.serviceファイルが見つかりません

[D-Bus Service] 
Name=com.mycompany.servicename 
Exec=/home/myuser/Workspace/service-start 
User=myuser 

よう.serviceファイルを作成しましたが、これはポイントではありません。私は実名を二重にチェックしました - それは正確に一致します。 私はこのファイルを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') 

は、私は右のサービス開始後に登録されているパス'/path/to/object'dbus.exceptions.DBusException: org.freedesktop.DBus.Error.ServiceUnknown: The name com.mycompany.servicename was not provided by any .service files

オブジェクトを取得する実行クライアントを起動しようとしているとき - そしてここで問題です。 私はなぜdbusが私の.serviceファイルを見つけることができないのか分かりません。多分私は何かを見逃しているでしょうか?何か案は?

D-BUSが自動的にスクリプトを開始するように管理しました。 .serviceファイルのセクションは、[D-BUS Service]代わりの[D-Bus service]

+0

.serviceファイルはどこに置いていますか? dbus-daemonのmanページはXDG Base Dir Specを参照しています。そのインターンは〜/ .local/shareに置くべきであると思われます(http://standards.freedesktop.org/basedir-spec/latest/を参照)。 ar01s03.html) –

+0

残念ながら、 'session buses 'を提供する他の' .service'ファイルの証拠はありませんが、同時に私が以前に述べたフォルダ(/ usr/share/dbus-1 /サービス)。私が[ここ](http://techbase.kde.org/Development/Tutorials/D-Bus/Autostart_Services)にあるフォルダの名前 – pss

+0

@pss、あなたは答えを作成し、それを自分で受け入れるべきです! –

答えて

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[D-BUS Service]でニーズが資産計上さということに注意してください。

これだけです!

+1

これは、dbus-daemonが自分のサービスを管理したいということですか? (dbus-pythonを使って特定のメッセージインターフェイスとオブジェクトパスをdbusに登録するアプリケーション*を手動で起動することを期待していますが、 'ServiceUnknown'例外が発生します)。 – n611x007

関連する問題