Как запустить сценарий оболочки в конце сеанса?

В предыдущем вопросе я узнал, как закрыть все экземпляры запущенных виртуальных машин, запущенных через 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 автоматически запустит это при выходе из системы.

Другие вопросы по тегам