Последовательно выполнить две команды с помощью crontab

Последовательно выполнить две команды с помощью crontab

Моя 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

Связанный контент