maxwell
他のアプリケーション()のDバス信号に基づいてさまざまなタスクを実行するユーザースペースデーモン()がありますroom
。maxwell
ユーザーが起動するとすぐに実行し、終了時にroom
停止したいと思いますroom
。
私はこのようなランチャースクリプトが望ましい動作を生成すると思います。
#!/bin/sh
systemctl --user start maxwell
room
systemctl --user stop maxwell
しかし、例えばsystemd自体を介してこれを行うより良い/標準的な方法はありますか?
修正する:私が探している機能は、upstart
過去に提供したものと似ているようです。バスイベント。systemd
Stephen Kittの答えによると、達成できる最も近いのは、特定のDバス名が最初に使用されたときに残念ながら、この場合、名前をroom
「所有」するサービスを自動的に開始するようです。
メモ:私の考えでは、これは何の関係もないようです。systemdには「システムではなくいくつかのプロセス」が必要ですか?または、少なくともそこに提供された答えがこの場合に機能します。私が理解したように、を使用すると、単位は次のように表示されExecStartPre
ます。maxwell
失敗room
まだ実行されていない場合。
答え1
システムサポートDバスアクティブ、D-Busメソッド呼び出しをサービスするサービスを開始します。これがユーザーサービスに移植可能かどうかはわかりません。システムサービスの場合は、D-Busサービスファイルを作成します。
[D-BUS Service]
Name=your.bus.name
Exec=/path/to/the/daemon
User=root
SystemdService=systemd-service-name.service
そして、一致するバス名を指定する必要がある対応するsystemdサービス:
[Service]
BusName=your.bus.name
指定するBusName
これにより、そのサービスがD-Busサービスとして自動的に表示されます。
すべてをユーザーサービスとしてインストールすることは可能ですが(User
D-Busサービスファイルと一致するように変更)、まだ試していません。