crontab 항목의 구문이 올바르게 보입니다. 실제로 " crontab -e
"를 사용하여 crontab을 편집 하면 구문 상 유효하지 않은 crontab 항목을 지정하면 오류가 발생합니다.
첫째, /path_to_my_php_script/info.php
명령 줄에서 올바르게 실행됩니까?
그렇다면 다음과 같이 올바르게 실행됩니까?
/bin/sh -c "(export PATH=/usr/bin:/bin; /path_to_my_php_script/info.php </dev/null)"
그것이 작동한다면, 이렇게 작동합니까?
/bin/sh -c "(export PATH=/usr/bin:/bin; /path_to_my_php_script/info.php </dev/null >/dev/null 2>&1)"
3 단계는 "man 5 cron"에 설명 된대로 cron이 프로그램을 실행하는 방법과 유사합니다.
가장 큰 문제는 PATH cron이 프로그램을 실행하는 데 사용하는 것이 너무 제한적이라는 것입니다. 따라서 crontab 항목의 맨 위에 다음과 같은 것을 추가 할 수 있습니다 (스크립트에 필요한 디렉토리를 추가해야 함).
PATH=~/bin:/usr/bin/:/bin
또한 cron은 기본적으로 /bin/sh
bash가 아닌을 사용 합니다. bash가 필요한 경우 crontab 파일의 시작 부분에 이것을 추가하십시오.
SHELL=/bin/bash
이러한 변경 사항은 모든 crontab 항목에 영향을 미칩니다 . info.php
프로그램의 값을 수정 하려면 다음과 같이하십시오.
*/2 * * * * /bin/bash -c ". ~/.bashrc; /path_to_my_php_script/info.php"
또한 "메일"로 구성된 시스템 (즉, MTA가 [sendmail / postfix / etc]로 구성된 시스템)에서 crontab 프로그램의 모든 출력이 자동으로 이메일로 전송됩니다. 기본 우분투 데스크탑 시스템에는 로컬 메일이 구성되어 있지 않지만 서버에서 작업하는 경우 터미널에 "mail"을 입력하면 모든 cron 메일을 볼 수 있습니다. 이것은 " at
"명령 에도 적용됩니다 .