SSHFSでいくつかのフォルダーをマウントするスクリプトと、アンマウントするスクリプトの2つがあります。
デフォルトのUbuntuデスクトップが起動したときに(グラフィカルコンソールでログインした後)マウントスクリプトを起動し、右上の歯車から「ログアウト...」するときにマウント解除スクリプトを起動したいデスクトップ。
誰かがこれを達成する方法を教えてもらえますか?デスクトップの起動/終了でコマンドを実行するための最も便利な/標準のフックは何ですか?
解決策は、スタートアップタスクを使用することでした。私は2つのタスクが必要でした。1つは、ユーザーのデスクトップが初期化されるときに実行されます。 2番目はユーザーセッションの有効期限が切れたときです。次の2つのスクリプトは、Ubuntu 14.04で動作します。
〜/ .config/upstart/desktopOpen.conf
description "Desktop Open Task"
start on desktop-start
task
script
# Commands to mount sshfs go here as Shell-script.
end script
〜/ .config/upstart/desktopClose.conf
description "Desktop Close Task"
start on session-end
task
script
# Commands to unmount sshfs go here as Shell-script.
end script
これらのイベントは、今後のUbuntuリリースの要件を引き続き満たすという私の指を交差させます。ここに自分の解決策を投稿する価値があると思いました-他の人に役立つ場合。
他のログインではなく、Unityにログインするときにジョブを実行するという要件を考慮すると、Upstart session job は完璧に思えます。
お気づきかもしれませんが、GUIログイン後に実行するプロセスは、2番目のinit
プロセスの下にあります。このinit
は適切なUpstart initであり、それによって発行されたイベントに基づいてセッションジョブを開始および停止できます。ルート権限はまったく必要ありません。より良い(または、観点によってはより悪い)が、これはまだヘッドレスシステムでは完全にはサポートされていません。 SSHログインは、今行った簡単なテストからユーザーの初期化を開始しませんでした。
セッションジョブを作成するには、.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
のジョブ)を制御するために使用されます。セッションジョブを制御するには、Upstartと対話するために使用される initctl
コマンドを使用する必要があります。
使用できるその他のイベントについては、 man upstart-events
を参照してください。