crontab에서 sh 스크립트를 실행하는 중에 문제가 발생했습니다.

crontab에서 sh 스크립트를 실행하는 중에 문제가 발생했습니다.

30분마다 sh 스크립트를 실행하도록 사용자 "pi"를 사용하여 crontab을 구성했습니다.

터미널에 crontab -u pi -e다음 줄을 추가했습니다: */30 * * * * /bin/sh /home/pi/test.sh

test.sh 스크립트에는 세 줄이 있습니다.

#!/bin/sh
/usr/bin/transmission-gtk
echo "done" > /home/pi/startup/result.txt

결과적으로 result.txt는 30분마다 업데이트되며, Transmission-gtk는 전혀 나타나지 않습니다. 즉, test.sh의 명령 중 1개만 유효합니다.

하지만 터미널에서 /home/pi/test.sh를 수동으로 실행하면 모든 것이 잘 작동합니다. test.txt가 업데이트되고 Transmission-gtk가 표시됩니다.

나는 crontab의 모든 것이 절대 경로로 작성되어야 한다는 것을 알고 있으며 Transmission-gtk가 /usr/bin에 있다고 확신합니다. 물론, 위에서 우리는 사용자 "pi"가 test.sh 및 Transmission-gtk를 실행할 수 있는 권한을 가지고 있음을 알고 있습니다.

왜 이런 일이 일어나는지 말해 줄 수 있는 사람이 있나요?

답변1

분명히 Transmission-gtk가 당신이 시작하고 싶은 그래픽 프로그램인가요? 이 경우 시작할 모니터를 cron에 알려주어야 합니다. crontab의 행 앞에 이것을 시도해 보십시오(디스플레이 0을 사용한다고 가정):

export DISPLAY=:0

또한 메일(아마도 /var/mail/username)에 오류 메시지가 있어야 합니다. 이를 통해 문제에 대해 더 자세히 알 수 있습니다.

관련 정보