crontab의 Symlink, 스크립트를 찾을 수 없음

crontab의 Symlink, 스크립트를 찾을 수 없음

데비안 테스트를 실행 중인데 심볼릭 링크된 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에 다음 규칙을 추가했습니다( whatever1분마다 실행).

crontab -e
* * * * * whatever

하지만그것은 작동하지 않습니다, 다음 오류가 발생합니다.

cat /var/mail/foobar
...
/bin/sh: 1: whatever: not found

하는 동안심볼릭 링크를 사용하지 않고 스크립트를 가리키면 작동합니다.:

crontab -e
* * * * * /home/foobar/dir/script.php

어떤 아이디어?

답변1

/usr/local/bincronjobs 에는 및 와 같은 디렉토리가 /usr/local/sbin기본적으로 포함되어 있지 않습니다 $PATH. 하지만 $PATHcrontab에서 재정의할 수 있습니다. 정의된 cronjob 앞에 이와 같은 내용을 추가하면 됩니다.

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

답변2

cron 아래의 $PATH 환경 변수는 제한되어 있으며 /usr/local/bin이나 /home/foobar/dir을 포함하지 않습니다. 정답은 찾은 대로 crontab의 스크립트 경로를 완전히 한정하는 것입니다. 그러면 놀라움이 줄어듭니다.

관련 정보