Я столкнулся с серьезной проблемой. Я написал сценарий 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 уже есть правильный, но у меня не было достаточно очков, чтобы просто добавить комментарий :).