Como posso executar um script de shell no final da sessão? [duplicado]

3

Em uma pergunta anterior , descobri como encerrar todas as instâncias de execução de VMs iniciadas através do vagrant . Eu gostaria de chamar esse script quando sair do meu Desktop Manager, que é atualmente Canela.

Alguns apontaram para outro semelhante similar, mas eu não entendi a resposta selecionada (s) o suficiente para ser capaz de resolver o meu problema e colocar qualquer coisa em ação. Os comentários abaixo apontam para start on stopping lightdm . Isso parece o que estou procurando. É assim que posso executar um script para parar todas as VMs (chamado: stop-vagrant.sh) quando meu logout do meu gerenciador de desktop ( start on stopping lightdm )?

    
por Richard 17.10.2014 / 18:27

1 resposta

3

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.

    
por muru 02.12.2014 / 17:09