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
)を制御するために使用されます。セッションジョブを制御するには、initctl
Upstartとの対話に使用されるコマンドを使用する必要があります。
man upstart-events
使用できるその他のイベントについては、を参照してください。