cron 작업이 실행되지 않음 - 루트가 정상적으로 실행 중임

cron 작업이 실행되지 않음 - 루트가 정상적으로 실행 중임

방금 만든 스크립트가 있는데 루트에서 제대로 실행됩니다. 크론 작업을 추가했지만 제대로 실행되지 않습니다.

명령은 다음과 같습니다:

gpio -g mode 17 input
getval="$(gpio read 17)"
todayis=$(date) 
getstatus=$getval 
if [ "$getstatus" = "0"  ]; then 
power="Power ON"
else
power="Power OFF"
echo $todayis $power $getstatus >> /var/www/turnmeon.log

루트로 실행할 때의 로그 파일:

Wed Nov 8 21:11:41 UTC 2017 Power ON 0

crontab으로 실행 시 로그 파일:

Wed Nov 8 21:11:41 UTC 2017 Power OFF

OFF가 실제로 참이라면 예상했던 것처럼 끝에 1이 없을 것입니다.

crontab 작업 대신 bash 프롬프트에서 실행되는 이유는 무엇입니까?

*/2 * * * * bash /myscript.sh

답변1

권한 문제인 것 같습니다. 아마도 데스크톱 사용자로 crontab을 편집하고 있을 것입니다. 이는 작업이 데스크톱 사용자로 실행된다는 의미입니다. 작업에 루트가 필요한 경우 루트로 crontab을 편집해야 합니다.

답변2

가능한 이유는 cron에 사용할 수 있는 gpio것이 없기 때문입니다. PATH예를 들어, gpio 명령에 대한 전체 경로를 지정하십시오.

getval="$(/sbin/gpio read 17)"

시스템에서 해당 파일이 어디에 있는지 알아내는 데 사용합니다 which gpio.

저는 임베디드 솔루션을 자주 수정하기 때문에 이전에도 이 문제로 어려움을 겪었습니다. 스크립트가 더 복잡하다면 일반적으로 작업을 더 쉽게 하기 위해 시작 부분에서 PATH 및 LD_LIBRARY_PATH를 초기화합니다.

관련 정보