
Моя 3-летняя девочка любитСуперТакс. Она не может управлять мышкой, поэтому игра должна запускаться автоматически при запуске. После игры компьютер должен автоматически выключиться.
Однако, когда я ввожу следующую команду в "кронтаб -е":
@reboot env DISPLAY=:0.0 /usr/games/supertux2 && echo "PASSWORD" | sudo -S shutdown -h now
Первая часть запускает игру на старом ПК во время загрузки. Я ожидал, что вторая часть команды выключит компьютер, когда моя девушка выйдет из игры, но это не работает.
Разве цепочка команд не A && B
означает, что когда А закончено, нужно начинать Б?
Как автоматизировать выключение компьютера при закрытии игры?
решение1
Технически, A && B
выполнит B только в случае успеха A (выходит со статусом EXIT_SUCCESS, т. е. 0). Аналогично, A || B
выполнит B только в случае неудачи A. Другой вариант может заключаться в том, A; B
что B должен выполняться независимо от статуса выхода A, но не до тех пор, пока A не завершится. Я не знаю, как в настоящее время завершается игра, но если она не завершается со статусом EXIT_SUCCESS, то B не будет выполнен.
Чтобы проверить это, вы можете выполнить следующие команды и посмотреть, какие из них генерируют строку:
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"
Наконец, вы можете создать скрипт оболочки /usr/games/supertux2.sh:
#!/bin/sh
/usr/games/supertux2
echo "PASSWORD" | sudo -S shutdown -h now
И затем вызовите его при перезагрузке, а не /usr/games/supertux2