
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 && B
significa que quando A terminar, inicie B?
Como posso automatizar o desligamento do computador quando o jogo é fechado?
Responder1
Tecnicamente, A && B
só executará B quando A for bem-sucedido (saída com status EXIT_SUCCESS, ou seja, 0). Da mesma forma, A || B
só executará B quando A falhar. Outra opção poderia ser A; B
executar 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