Сбой 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