데비안 테스트를 실행 중인데 심볼릭 링크된 PHP 스크립트를 실행하기 위한 간단한 크론을 얻을 수 없습니다.
내 홈 폴더의 하위 디렉토리에 PHP 스크립트가 있습니다 /home/foobar/dir/script.php
(다음 shebang으로 시작함 #!/usr/bin/env php
).
나는 그것을 가리키는 심볼릭 링크를 만들었습니다.
sudo ln -s ~/dir/script.php /usr/local/bin/whatever
ls -la /usr/local/bin
lrwxrwxrwx 1 root staff 24 Feb 27 17:46 whatever -> /home/foobar/dir/script.php*
그리고 내 crontab에 다음 규칙을 추가했습니다( whatever
1분마다 실행).
crontab -e
* * * * * whatever
하지만그것은 작동하지 않습니다, 다음 오류가 발생합니다.
cat /var/mail/foobar
...
/bin/sh: 1: whatever: not found
하는 동안심볼릭 링크를 사용하지 않고 스크립트를 가리키면 작동합니다.:
crontab -e
* * * * * /home/foobar/dir/script.php
어떤 아이디어?
답변1
/usr/local/bin
cronjobs 에는 및 와 같은 디렉토리가 /usr/local/sbin
기본적으로 포함되어 있지 않습니다 $PATH
. 하지만 $PATH
crontab에서 재정의할 수 있습니다. 정의된 cronjob 앞에 이와 같은 내용을 추가하면 됩니다.
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
답변2
cron 아래의 $PATH 환경 변수는 제한되어 있으며 /usr/local/bin이나 /home/foobar/dir을 포함하지 않습니다. 정답은 찾은 대로 crontab의 스크립트 경로를 완전히 한정하는 것입니다. 그러면 놀라움이 줄어듭니다.