4 votes

Exécuter deux commandes séquentiellement à l'aide de la crontab

Ma fille de 3 ans adore SuperTux . Elle ne peut pas contrôler la souris, c'est pourquoi le jeu doit se lancer automatiquement au démarrage. Après le jeu, l'ordinateur doit s'éteindre automatiquement.

Cependant, lorsque je mets la commande ci-dessous dans " crontab -e " :

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

La première partie lance le jeu sur un vieux PC au démarrage. Je m'attendais à ce que la deuxième partie de la commande éteigne l'ordinateur lorsque ma fille quitterait le jeu, mais cela ne fonctionne pas.

La chaîne de commandement n'est-elle pas A && B Cela signifie que lorsque la lettre A est terminée, la lettre B commence ?

Comment automatiser l'extinction de l'ordinateur lorsque le jeu est fermé ?

11voto

Dr.Tower Points 389

Techniquement, A && B n'exécutera B que si A réussit (il sort avec le statut EXIT_SUCCESS, c'est-à-dire 0). De même, A || B n'exécutera B que si A échoue. Une autre option pourrait être A; B qui doit exécuter B quel que soit l'état de sortie de A, mais pas avant que A ne se soit achevé. Je ne sais pas comment les jeux se terminent actuellement, mais s'ils ne se terminent pas avec un statut EXIT_SUCCESS, alors B ne sera pas exécuté.

Pour tester cela, vous pouvez exécuter les commandes suivantes et voir lesquelles génèrent la chaîne :

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"

Enfin, vous pouvez créer un Shell Shell /usr/games/supertux2.sh :

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

Et l'appeler au redémarrage, plutôt que /usr/games/supertux2

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X