SSH 経由で Upstart セッション ジョブを制御するにはどうすればよいですか?

SSH 経由で Upstart セッション ジョブを制御するにはどうすればよいですか?

私は、Tor や開発用 Web サーバーなどを起動する Upstart セッション ジョブをかなり持っています。GUIinitctl経由でシステムにログインしているときは、コマンドとその省略形を問題なく使用できます。ただし、SSH 経由では、Upstart コマンドはセッション ジョブを認識していることを示すわずかなヒントさえ示しません。つまり、次のようになります。

$ cat ~/.config/upstart/tor9050.conf
description "Tor on port 9050"
start on desktop-start
stop on session-end

respawn

expect daemon
exec /usr/sbin/tor -f /home/muru/.torrc9050
$ status tor9050
status: Unknown job: tor9050
$ pgrep -fa 9050
31096 /usr/sbin/tor -f /home/muru/.torrc9050

ご覧のとおり、セッション ジョブは正常に動作しており、GUI にログインすると、status tor9050期待どおりの出力が表示されますtor9050 start/running, process 31096

では、SSH 経由で Upstart セッション ジョブのステータスを取得したり、制御したりするにはどうすればよいでしょうか?

答え1

面倒だと思う方法の一つは、Upstart クックブック (4.3.1.1: セッションへの参加)設定する必要がありますUPSTART_SESSION:

export XDG_RUNTIME_DIR=/run/user/$(id -u)
export UPSTART_SESSION=$(initctl list-sessions | awk '{print $2; quit}')

その後は正常に動作します:

$ status tor9050                                                             
tor9050 start/running, process 31096

関連情報