Симлинк в crontab, скрипт не найден
Я запускаю тестирование Debian и не могу получить простой cron для запуска PHP-скрипта с символической ссылкой.
У меня есть php-скрипт в подкаталоге моей домашней папки /home/foobar/dir/script.php
(который начинается со следующего Шебанга #!/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
каждую минуту):
crontab -e
* * * * * whatever
Но это не работает, я получаю следующую ошибку:
cat /var/mail/foobar
...
/bin/sh: 1: whatever: not found
Хотя указание на скрипт без использования символической ссылки работает:
crontab -e
* * * * * /home/foobar/dir/script.php
Любая идея?
2 ответа
Каталоги как /usr/local/bin
а также /usr/local/sbin
не по умолчанию в cronjobs $PATH
, Но вы можете переопределить $PATH
в crontab просто поместите что-то вроде этого перед любым заданным cronjobs
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Переменная окружения $PATH в cron ограничена и не содержит ни / usr / local / bin, ни /home/foobar/dir. Правильный ответ, как вы нашли, состоит в том, чтобы полностью указать путь к сценарию в вашем crontab; это приводит к меньшему количеству сюрпризов.