Executar script antes de desligar

21

Quando eu desligo o computador, quero mostrar algumas tarefas pendentes que tenho que fazer antes de sair do escritório ... Eu fiz um aplicativo local para gerenciar essas tarefas, basicamente só quero executar um comando e desligar depois de matar o aplicativo executado.

juanefren
fonte
Pode ser útil para futuros usuários: askubuntu.com/a/747556/295286
Sergiy Kolodyazhnyy

Respostas:

7

Você pode adicionar seu comando ao arquivo /etc/gdm/PostSession/Defaultantes da exit 0linha.

popey
fonte
Se eu for para a opção "Logout", ele executa bem, mas se eu pressionar o encerramento, a tela de logout roxa quase instantânea do ubuntu será exibida e executará o script (na tela onde aparece o logotipo do ubuntu com 5 bolinhas). (testado com sono 20).
juanefren
A caixa de diálogo "Tem certeza de que deseja desligar" está localizada aqui: / usr / lib / indicador-sessão / gtk-logout-helper e uma parte do pacote da sessão de indicadores que está escrita em C / C ++, portanto é muito difícil editar. Você pode ter mais sorte perguntando em alguma lista de discussão gnome-guru;)
LassePoulsen
6

Você pode fazer isso criando um script em /etc/rc0.d (para desligar) e /etc/rc6.d (para reinicializar). Para fazer isso, execute:

gksu gedit /etc/rc0.d/K01mycustomscript

Edite seu script de desligamento no editor de texto e execute:

sudo chmod +x /etc/rc0.d/K01mycustomscript

E se você deseja que ele seja executado na reinicialização também, execute o seguinte:

sudo cp /etc/rc0.d/K01mycustomscript /etc/rc6.d/K01mycustomscript

Fonte: este tópico do fórum

dv3500ea
fonte
A partir de sua descrição, parece que ele deseja invocar um aplicativo gráfico, portanto, ele precisa acessar o xserver. Nesse caso, o uso de scripts init não funciona.
sepp2k
1
Sim ... como @ sepp2k diz, script está sendo executado xserver fora :(
juanefren
4

Parece uma pergunta para superuser.com para mim. Enfim, depois de pesquisar no Google, achei Como executar um script no logout? que diz para adicionar o script a $ HOME / .bash_logout.

Se isso não funcionar, adicione

$HOME/.bash_logout

para / etc / gdm / PostSession / Default, para que ele execute o script de logout corretamente.

Como antes do desligamento, o usuário é desconectado de qualquer maneira, isso deve cobrir as duas bases.

myusuf3
fonte
1
Como ele provavelmente não quer que o script seja executado toda vez, ele faz logout do bash (ou seja, toda vez que fecha uma janela do terminal), não acho que seja uma boa ideia escrever o comando em .bash_logout. No entanto, escrevê-lo no PostSession / Default parece uma boa ideia para mim.
sepp2k
Já tem este arquivo, mas parece que ele não está funcionando (eu coloquei o sono 20 e não esperar para o desligamento.)
juanefren
O .bash_logout não será executado quando você fechar um terminal, mas somente quando você sair de uma sessão de login do terminal (ou seja, se você fizer logout de um realTTY) e não quando você sair do gnome.
LassePoulsen
Por que isso seria uma pergunta para superusuário? Se a pergunta é sobre o Ubuntu, está no tópico.
NN
2

Se você o fizer, ./app-to-run && sudo shutdown -h nowo computador deve desligar após a conclusão do aplicativo para execução.

Tommy Brunn
fonte
1
Isso seria um desligamento muito grosseiro. Você prefere chamar o script de desligamento da área de trabalho.
txwikinger
O sudo pode solicitar ao usuário que digite a senha, caso o aplicativo seja executado o suficiente ... Portanto, nunca será encerrado.
Samb 07/09
1

Quase a mesma resposta que Tommy Brunn, mas sem o risco de ficar com a senha de root solicitada:

sudo sh -c "./app-to-run; shutdown -h now"
samb
fonte