O que você precisa fazer é criar um job Upstart . Digamos que seu script para parar as VMs esteja disponível em /some/path/vagrant-stop.sh
.
Dependendo da natureza exata de suas VMs (elas são executadas apenas quando você está conectado a uma GUI ou são executadas quando o sistema é inicializado etc.), você pode usar um trabalho do sistema ou um trabalho da sessão. . Para o caso em que as VMs são executadas apenas quando você está conectado a uma GUI, é possível usar um trabalho de sessão, um exemplo simples do qual apresentarei aqui:
Crie um arquivo em ~/.config/upstart
com uma extensão .conf
(use seu editor favorito):
vim ~/.config/upstart/stop-vms.conf
O conteúdo seria:
description "Give your task a description"
start on session-end
task
exec /some/path/vagrant-stop.sh
Execute initctl check-config
para ver se há algum erro.
Agora, você pode parar suas VMs com (pardon the phrasing):
start stop-vms
O Upstart executará isso automaticamente quando você sair.