다음 명령을 사용하여 crontab.custom 파일을 만들었습니다.
*/1 * * * * /home/username/data/www/run.sh
다음 run.sh
을 포함합니다:
php script.php
그 후에 이 명령을 실행합니다 crontab crontab.custom
.
이제 crontab -l
내 임무로 돌아가자.
cron을 다시 시작했지만 호출되지 않았습니다 /etc/rc.d/cron restart
. script.php
작동하게 하려면 어떻게 해야 합니까?
답변1
이는 귀하의 구성이 구성되지 않았기 때문일 수 있습니다 $PATH
. php
셸에서 실행 하려고 하면 실제로 실행 파일을 찾을 디렉터리 목록인 php
절대 대상을 찾습니다 . $PATH
이는 귀하의 환경에 설정되어 있지만 cron은 해당 환경을 공유하지 않습니다(실제로 하나가 비어 있거나 설정되지 않았을 수 있음 $PATH
). 여러 가지 솔루션이 있습니다(최고부터 최악까지).
$PATH
상단에 다음과 같은 내용을 추가하여 crontab을 설정하세요.
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
스크립트에서 실행 파일의 전체 경로를 사용하십시오
php
(이것은 좋지 않습니다. 사용자는 필요한 경우 다른 바이너리를 사용하기 위해 환경에서 PATH를 재정의할 수 있어야 합니다).$PATH
스크립트에서 명시적으로 설정합니다(같은 이유로 좋지 않습니다).
답변2
아래와 같이 쉘 스크립트 상단에 다음 줄을 추가하십시오.
#!/bin/bash
PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
export PATH
그런 다음 cron 작업을 사용하십시오.
crontab -e
답변3
crontab 파일의 문제는 cron에서 실행할 때 다른 환경과 관련되는 경우가 많습니다. 아직 파일을 제공하지 않았으므로 run.sh
다음은 몇 가지 문제 해결 팁입니다.
- 직접
/home/username/data/www/run.sh
명령줄에 입력하고 작동하는지 확인하세요. - 스크립트에서 모든 경로가 명시적으로 전체 경로로 설정되어 있는지 확인하세요.
- 데이터를 올바른 위치에 추가했는지 확인합니다.
crontab -e
crontab 파일을 편집할 수 있습니다. - cron을 사용할 수 있는 권한이 있는지 확인하세요. 사용자 이름은
/var/cron/allow
파일이 아닌/var/cron/deny
파일에 있어야 합니다. - /var/log/cron의 출력을 확인하세요.