Символическая ссылка в crontab, скрипт не найден

Символическая ссылка в 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

Есть идеи?

решение1

Каталоги, такие как /usr/local/binи /usr/local/sbinне по умолчанию находятся в cronjobs $PATH. Но вы можете переопределить $PATHв crontab, просто поместив что-то вроде этого перед любым определенным cronjobs

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

решение2

Переменная окружения $PATH в cron ограничена и не будет включать ни /usr/local/bin, ни /home/foobar/dir. Правильный ответ, как вы обнаружили, — полностью указать путь к скрипту в вашем crontab; это приводит к меньшим сюрпризам.

Связанный контент