
A mi niña de 3 años le encantasupertux. No puede controlar el mouse, por lo que el juego debería ejecutarse automáticamente al iniciarse. Después del juego, la computadora debería apagarse automáticamente.
Sin embargo, cuando pongo el siguiente comando en "crontab-e":
@reboot env DISPLAY=:0.0 /usr/games/supertux2 && echo "PASSWORD" | sudo -S shutdown -h now
La primera parte ejecuta el juego en una PC antigua en el momento del arranque. Esperaba que la segunda parte del comando apagara la computadora cuando mi niña saliera del juego, pero no funciona.
¿No significa el comando en cadena que A && B
cuando A termine, comience B?
¿Cómo puedo automatizar el apagado de la computadora cuando el juego está cerrado?
Respuesta1
Técnicamente, A && B
solo ejecutará B cuando A tenga éxito (sale con el estado EXIT_SUCCESS, es decir, 0). Del mismo modo, A || B
sólo ejecutará B cuando A falle. Otra opción podría ser A; B
ejecutar B independientemente del estado de salida de A, pero no hasta que A haya completado. No sé cómo están saliendo los juegos actualmente, pero si no salen con un estado EXIT_SUCCESS, entonces B no se ejecutará.
Para probar esto, puede ejecutar los siguientes comandos y ver cuáles generan la cadena:
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, puedes crear un script de shell /usr/games/supertux2.sh:
#!/bin/sh
/usr/games/supertux2
echo "PASSWORD" | sudo -S shutdown -h now
Y luego llame a eso al reiniciar, en lugar de /usr/games/supertux2