Unityにログインしたときに他のログインではなくジョブを実行するという要件を考慮すると、Upstart セッションジョブは完璧に見えます。
お気づきかもしれませんが、GUIログイン後に実行するinitプロセスは2番目のプロセスの下にあります。これinitは適切なUpstart initであり、それによって発行されたイベントに基づいてセッションジョブを開始および停止できます。ルート権限はまったく必要ありません。しかし、ヘッドレスシステムの方がまだ完全にサポートされていません。SSHログインは、私が今行った簡単なテストからユーザーinitを開始しませんでした。
セッションジョブを作成するには、で新しい.confファイルを作成します~/.config/upstart。これは、Upstartセッションジョブ($XDG_CONFIG_HOME/upstart)のデフォルトのプライマリディレクトリです。存在しない場合は作成します。ジョブの例を次に示します。
tee ~/.config/upstart/myjob.conf <<EOF
description "My job"
start on desktop-start
stop on desktop-end
script
firefox 'http://upstart.ubuntu.com/cookbook/#session-job'
end script
EOF
手動で制御できます。
start myjob
# or
initctl start myjob
このserviceコマンドは、システムジョブ(/etc/init.dまたは内のもの/etc/init)を制御するために使用されます。セッションジョブを制御するには、initctlUpstartとの対話に使用されるコマンドを使用する必要があります。
man upstart-events使用できるその他のイベントについては、を参照してください。