cron을 사용하여 쉘 스크립트를 실행할 수 없습니다.

cron을 사용하여 쉘 스크립트를 실행할 수 없습니다.

test.sh쉘 스크립트가 있습니다/home/username

파일 test.sh에는 다음 줄이 포함되어 있습니다.

#!/bin/sh

cd /home/username/bin

sh launch.sh  ParameterName

#launch.sh is in /home/username/bin directory

다음과 같이 crontab 항목을 설정했습니다.

* * * * * /home/username/test.sh

터미널에서 실행 하면 /home/username/test.sh잘 작동합니다. 하지만 작동하지 않습니다 cron.

답변1

명령줄에서 스크립트를 올바르게 실행하는 데 관련된 거의 모든 문제는 cronPATH 변수 설정으로 인해 발생합니다. man 5 crontabVixie cron 에 따르면 :

   On the Debian GNU/Linux system, cron supports the pam_env  module,  and
   loads  the  environment  specified  by  /etc/environment and /etc/secu‐
   rity/pam_env.conf.    It   also   reads   locale    information    from
   /etc/default/locale.   However,  the  PAM  settings do NOT override the
   settings described above nor any settings in the crontab  file  itself.
   Note  in particular that if you want a PATH other than "/usr/bin:/bin",
   you will need to set it in the crontab file.

cron다른 시스템 및/또는 기타 구현의 세부 사항은 다를 수 있지만cron에서 전달된 스크립트의 PATH는 셸의 경로보다 더 제한적일 수 있습니다..

이는 스크립트(또는 스크립트에서 호출된 스크립트/프로그램)에 의해 호출된 모든 항목이 예를 들어 내에서 /usr/local/bin호출될 때 런타임에 발견되지 않음을 의미합니다 cron.

스크립트를 호출하여 이를 테스트할 수 있습니다.

 PATH=/usr/bin:/bin /home/username/test.sh

crontab 파일의 경로를 확장하면 이 문제를 해결할 수 있습니다.

 PATH = /usr/local/bin:/usr/bin:/bin

스크립트가 호출되는 실제 줄 앞에. 변수는 대체되지 않습니다(그러므로 이 작업을 수행하지 마십시오 PATH = /usr/local/bin:$PATH).

스크립트 상단 근처의 로그 파일 중 하나에 echo 문을 포함하는 것도 좋은 습관입니다.

 TSTLOG=/var/tmp/myscript.log
 echo "invoking script" > "$TSTLOG"
 date >> "$TSTLOG"
 echo "$PATH" >> "$TSTLOG"

(의도적으로 여기에서 다루었습니다 echo). 따라서 프로그램이 호출되는지, 어떤 환경에서 이러한 현상이 발생하는지 확인할 수 있습니다.

이메일도 확인해야 합니다. 시스템 자체에서 시스템이 일반 계정으로 이메일을 전달하도록 설정되어 있지 않은 경우. 많은 cron 이메일은 이메일이 없기 때문에 눈에 띄지 않습니다 [email protected]. 시스템은 단지 cron에 사용되는 로컬 계정이 읽을 수 있는 메시지를 배치합니다.

답변2

두 가지 옵션:

옵션 1 - 갖고 계시나요 chmod +x test.sh?

이렇게 하면 ./test.sh대신에 로 실행할 수 있습니다 sh test.sh.

옵션 2 - 파일을 chmod하지 않으려면 crontab 항목을 다음으로 변경하십시오.

* * * * * /usr/bin/sh /home/username/test.sh

또한 후자를 선택하는 경우 다음을 sh사용하여 바이너리 위치를 확인 해야 합니다.

which sh

관련 정보