Сбой cronjob с /usr/bin/env

У меня есть скрипт, который отлично работает, если я запускаю его из командной строки вручную. Однако при запуске через cron задание не выполняется со следующей ошибкой:

/ usr / bin / env: escript: Нет такого файла или каталога

Первая строка в скрипте:

#!/usr/bin/env escript

Единственное, что я могу понять, это то, что escript не найден, и это потому, что он установлен не в / usr / bin, а в подкаталоге домашнего каталога пользователя.

Мое понимание - возможно, неправильное понимание - cron состоит в том, что cron выполняет каждое задание в crontab пользователя под UID/GID пользователя. Не должно ли оно также наследовать переменную PATH от пользователя? Должно ли все быть указано как абсолютные пути?

2 ответа

Решение

Cron работает под UID пользователя, но с минимальным PATH, Ваш сценарий должен использовать полный путь к интерпретатору (escript) или вам нужно установить PATH в кронтаб.

cron не наследует PATH от интерактивной настройки пользователя. PATH установлен в "/ usr / bin: / bin"

Ypu может устанавливать переменные окружения в строке crontab

Смотрите man crontab для деталей, например, man crontab

Другие вопросы по тегам