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.


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.


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


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.


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.


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"
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.