Execute dois comandos sequencialmente usando crontab

Execute dois comandos sequencialmente usando crontab

Minha menina de 3 anos adoraSuperTux. Ela não consegue controlar o mouse, então o jogo deve rodar automaticamente na inicialização. Após o jogo, o computador deverá desligar automaticamente.

No entanto, quando 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 roda o jogo em um PC antigo durante a inicialização. Eu esperava que a segunda parte do comando desligasse o computador quando minha garota saísse do jogo, mas não está funcionando.

O comando em cadeia não A && Bsignifica que quando A terminar, inicie B?

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

Responder1

Tecnicamente, A && Bsó executará B quando A for bem-sucedido (saída com status EXIT_SUCCESS, ou seja, 0). Da mesma forma, A || Bsó executará B quando A falhar. Outra opção poderia ser A; Bexecutar B independentemente do status de saída de A, mas não até que A seja concluído. Não sei como os jogos estão saindo no momento, mas se não estiver saindo com o status EXIT_SUCCESS, 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 então chame isso na reinicialização, em vez de /usr/games/supertux2

informação relacionada