Назад | Перейти на главную страницу

Скрипт не может выполнять команды из crontab

Я столкнулся с серьезной проблемой. Я написал сценарий bash, чтобы получить статус приложения. Скрипт работает нормально, когда я выполняю его из оболочки, но когда я пытаюсь выполнить тот же скрипт из crontab, он не работает. Не уверен, что здесь происходит ...

И руководство, и cron запускаются из учетной записи root.

Обычно это происходит потому, что cron не включает PATH так же, как это делает оболочка. Попробуйте ввести в командной строке «echo $ PATH». Возьмите полученную строку PATH и добавьте ее в начало файла crontab как PATH = Это, вероятно, исправит это.

отметка

Root, вероятно, получает сообщение электронной почты с объяснением ошибки. Проверить почту root, либо установить MAILTO на какой-то другой адрес в верхней части файла.

В дополнение к возможности другого PATH имейте в виду, что crontab имеет несколько странных правил побега. В частности, % становится новой строкой, а символы после первого % стать стандартным вводом команды.

@mfarver уже ответил, я просто хочу добавить:
Для любого сценария, запущенного при запуске, не будет установлена ​​переменная PATH env. Вам придется вызывать все те команды, которые вы используете, с полным путем, если вы не экспортируете PATH. Каждый раз, когда вы создаете его, просто добавляйте export PATH=$PATH:/bin:/usr/bin:/usr/local/bin в начале, и все будет в порядке. Конечно, если вам нужны другие папки на этом пути, добавьте их туда. Я не хотел делать это ответом, поскольку у @mfarver уже есть правильный, но у меня не было достаточно очков, чтобы просто добавить комментарий :).