Как запустить сценарий оболочки в конце сеанса?
В предыдущем вопросе я узнал, как закрыть все экземпляры запущенных виртуальных машин, запущенных через vagrant. Я хотел бы вызвать этот скрипт при выходе из моего Desktop Manager, который в настоящее время является Cinnamon.
Некоторые указали на другой подобный подобный, но я не понимал отобранные ответы достаточно, чтобы быть в состоянии решить мою проблему и привести что-либо в действие. Комментарии ниже указывают на start on stopping lightdm
, Это звучит как то, что я ищу. Вот как я могу запустить скрипт для остановки всех виртуальных машин (называемый: stop-vagrant.sh), когда мой логин выходит из моего менеджера рабочего стола ( start on stopping lightdm
)?
1 ответ
Что вам нужно сделать, это создать задание Upstart. Допустим, ваш сценарий остановки виртуальных машин доступен по адресу /some/path/vagrant-stop.sh
,
В зависимости от точного характера ваших виртуальных машин (они запускаются только при входе в GUI, или они запускаются при запуске системы и т. Д.), Вы можете использовать либо системное задание, либо задание сеанса. В случае, когда виртуальные машины запускаются только когда вы вошли в GUI, вы можете использовать задание сеанса, простой пример которого я приведу здесь:
Создать файл в ~/.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
чтобы увидеть, есть ли какие-либо ошибки.
Теперь вы можете остановить свои виртуальные машины с помощью (простите за формулировку):
start stop-vms
Upstart автоматически запустит это при выходе из системы.