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

808
Dr. Watson

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

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

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

#!/usr/bin/env escript 

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

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

1

2 ответа на вопрос

1
Dennis Williamson

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

0
Mark

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

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

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