Execute dois comandos sequencialmente usando o crontab

4

Minha menina de três anos adora o SuperTux . Ela não pode controlar o mouse, então o jogo deve rodar automaticamente na inicialização. Após o jogo, o computador deve desligar automaticamente.

No entanto, quando eu coloco o comando abaixo em " crontab -e ":

@reboot env DISPLAY=:0.0 /usr/games/supertux2 && echo "PASSWORD" | sudo -S shutdown -h now

A primeira parte executa o jogo em um PC antigo no momento da inicialização. Eu esperava que a segunda parte do comando desligasse o computador quando minha garota sair do jogo, mas não está funcionando.

O comando de corrente A && B não significa quando o A terminou, inicia B?

Como posso automatizar o desligamento do computador quando o jogo é fechado?

    
por mini 30.04.2013 / 18:21

1 resposta

11

Tecnicamente, A && B só executará B quando A for bem-sucedido (sai com status de EXIT_SUCCESS, ou seja, 0). Da mesma forma, A || B só executará B quando A falhar. Outra opção pode ser A; B , que deve executar B, independentemente do status de saída de A, mas não até que A seja concluído. Eu não sei como os jogos estão saindo, mas se ele não estiver saindo com um status EXIT_SUCCESS, então B não será executado.

Para testar isso, você pode executar os seguintes comandos e ver quais geram a string:

perl -e 'exit 0' && echo "exit was successful"
perl -e 'exit 0' || echo "exit was successful"
perl -e 'exit 0'; echo "exit was successful"
perl -e 'exit 1' && echo "exit was failure"
perl -e 'exit 1' || echo "exit was failure"
perl -e 'exit 1'; echo "exit was failure"

Finalmente, você pode criar um script de shell /usr/games/supertux2.sh:

#!/bin/sh
/usr/games/supertux2
echo "PASSWORD" | sudo -S shutdown -h now

E, em seguida, chame isso na reinicialização, em vez de / usr / games / supertux2

    
por Dr.Tower 30.04.2013 / 19:49