Execute o script antes de desligar no Ubuntu

5

Quando encerro meu computador, quero mostrar algumas tarefas pendentes que preciso fazer antes de sair do escritório.

Eu tenho um aplicativo local para gerenciar essas tarefas, então basicamente eu só quero executar um comando e desligar depois que eu mato o aplicativo que foi executado.

Eu já tentei com estas opções:

/etc/gdm/PostSession/Default

Isso funciona apenas quando eu seleciono a opção LogOut, em vez de Shutdown.

/etc/rc0.d/K01mycustomscript

Execute um script após o X ser eliminado.

$HOME/.bash_logout

Parece que não faz nada.

./app-to-run && sudo shutdown -h now

Não gosto disso por dois motivos: ele solicita a senha do sudo e não posso usar o botão de desligamento do meu laptop.

Estou usando o Ubuntu 10.04.

    
por juanefren 10.08.2010 / 20:45

5 respostas

1

Você pode criar um script de inicialização em /etc/init.d/ e então configurar em qual nível de execução você quer com o chkconfig. Eu nunca fiz o que você quer, mas eu começaria nessa rota.

    
por 10.08.2010 / 22:26
1
  • /etc/rc0.d/K01mycustomscript talvez precise ser /etc/rc0.d/S01mycustomscript
  • verifique se é executável ( chmod 755 /etc/rc0.d/K01mycustomscript ou chmod 755 /etc/rc0.d/S01mycustomscript )
  • experimente um registro em log: adicione a linha logger 'mycustomscript START' ao início de seu script e logger 'mycustomscript END' ao final, desligue e procure suas mensagens de log em /var/log/messages
  • observe que a convenção é, em vez disso, criar um script de início / parada em /etc/init.d/ , criar links simbólicos para esse script nos diretórios /etc/rc*.d apropriados ou usar uma ferramenta como chkconfig ou update-rc.d para manter os links simbólicos (consulte a página da Wikipédia "Init")
  • veja esta pergunta semelhante
por 11.08.2010 / 11:24
1

Confira /etc/rc0.d/README - diz

The scripts in this directory are executed once when entering
runlevel 0.

The scripts are all symbolic links whose targets are located in
/etc/init.d/ .

Generally it is not necessary to alter the scripts in this directory.
Their purpose is to stop all services and to make the system ready
for shutdown.

Você precisará criar um script em /etc/init.d e, em seguida, criar uma ligação simbólica para /etc/rc0.d/ para fazer com que os scripts sejam executados no desligamento.

    
por 10.08.2010 / 22:21
0
  • Coloque seu script executável em algum lugar - /etc/init.d é recomendado.
  • Crie um link simbólico deste local em /etc/rc0.d , começando com S (para iniciar este script ao chegar ao nível de execução 0.
  • Presumo que a máquina esperará que este script termine antes de desligar, embora eu nunca tenha testado isso.
por 29.01.2011 / 22:59
0

a maneira / etc / gdm / PostSession / Default funciona:

você tem que "consertar" o skript do gdm (ou mdm no meu caso):

/etc/init/mdm.conf

line15: pare no nível de execução [016]

PARA:

pare de iniciar o rc runlevel [016]

    
por 26.08.2014 / 15:24