web-dev-qa-db-ja.com

セッション終了時にシェルスクリプトを実行するにはどうすればよいですか?

前の質問 で、シャットダウンする方法を見つけましたallvagrant で起動された実行中のVMのインスタンス。現在CinnamonであるDesktop Managerからログアウトするときに、このスクリプトを呼び出したいです。

似たような類似の別の問題を指摘する人もいますが、選択した回答を理解していなかったため、問題を解決して何かを実行することができませんでした。以下のコメントは、start on stopping lightdm。これは私が探しているもののように聞こえます。 これは、デスクトップマネージャーからログアウトするときに、すべてのVM(stop-vagrant.shと呼ばれる)を停止するスクリプトを実行する方法です(start on stopping lightdm)?

3
Rick

あなたがする必要があるのは pstart job を作成することです。 VMを停止するためのスクリプトが/some/path/vagrant-stop.shで利用できるとしましょう。

VMの正確な性質(GUIにログインしたときにのみ実行されるか、システムの起動時に実行されるかなど)に応じて、システムジョブまたはセッションジョブを使用できます。 GUIにログインしているときにのみVMを実行する場合、セッションジョブを使用できます。簡単な例を以下に示します。

~/.config/upstart拡張子で.confにファイルを作成します(お気に入りのエディターを使用します)。

vim ~/.config/upstart/stop-vms.conf

コンテンツは次のとおりです。

description "Give your task a description"
start on session-end

task

exec /some/path/vagrant-stop.sh

initctl check-configを実行して、エラーがあるかどうかを確認します。

これで、次のようにVMを停止できます(言い回しをご容赦ください):

start stop-vms

ログアウトすると、Upstartが自動的にこれを実行します。

3
muru