crontab을 사용하여 두 명령을 순차적으로 실행

crontab을 사용하여 두 명령을 순차적으로 실행

3살 딸아이가 너무 좋아해요슈퍼턱스. 그녀는 마우스를 제어할 수 없으므로 게임이 시작될 때 자동으로 실행되어야 합니다. 게임이 끝나면 컴퓨터가 자동으로 종료됩니다.

그러나 아래 명령을 "크론탭 -e":

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

첫 번째 부분은 부팅 시 오래된 PC에서 게임을 실행합니다. 내 딸이 게임을 종료하면 컴퓨터를 끄는 명령의 두 번째 부분이 작동할 것으로 예상했지만 작동하지 않습니다.

체인 명령은 A && BA가 끝나면 B를 시작한다는 의미가 아닙니까?

게임이 종료될 때 컴퓨터 전원 끄기를 자동화하려면 어떻게 해야 합니까?

답변1

기술적으로 A && BA가 성공할 때만 B를 실행합니다(EXIT_SUCCESS 상태, 즉 0으로 종료). 마찬가지로 A || BA가 실패할 때만 B를 실행합니다. 또 다른 옵션은 A; BA의 종료 상태에 관계없이 B를 실행해야 하지만 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 대신 이를 호출하세요.

관련 정보