Помогите в отладке задания cron, которое имеет правильный путь к скрипту и работает при ручном запуске - PullRequest
1 голос
/ 31 августа 2010

Я пытаюсь отладить работу cron, которая работает некорректно.Задание cron вызывает сценарий оболочки, который должен удалить файл rar - это работает правильно, когда я запускаю скрипт вручную, но по какой-то причине он не работает через cron.Я использую абсолютный путь к файлу и проверил, что путь правильный.У кого-нибудь есть идеи, почему это может происходить?

Ответы [ 3 ]

17 голосов
/ 31 августа 2010

Ну, вы уже сказали, что использовали абсолютные пути, поэтому проблема с номером 1 решена.

Далее нужно проверить разрешения.Какому пользователю запускается задание cron?Имеет ли он все необходимые разрешения?

Затем небольшая хитрость: если у вас есть сценарий оболочки, который не работает и не запускается в терминале, мне нравится перенаправлять вывод его в некоторые файлы.В самом начале сценария добавьте:

exec &>/tmp/my.log

Это перенаправит STDOUT и STDERR на /tmp/my.log.Тогда было бы также неплохо добавить строку:

set -x

Это заставит bash распечатать, какую команду она собирается выполнить и на каком уровне вложенности.

Удачной отладки!

2 голосов
/ 31 августа 2010

Первое, что нужно проверить при сбое заданий cron, - это проверить, доступна ли полная среда для сценария, который вы пытаетесь выполнить. Другими словами, вы должны понимать, что задание, выполняемое через cron, выполняется как отдельный процесс, то есть оно не связано со средой входа в систему. Поэтому всякий раз, когда вы пытаетесь отладить задание cron, которое работает при выполнении вручную, вы должны быть уверены, что cronjob доступна та же среда, что и вы, когда вы выполняете ее вручную. Это включает любые настройки PATH и другие envvars, от которых может зависеть сценарий.

0 голосов
/ 29 августа 2013

Для меня проблема была в другом интерпретаторе оболочки в crontab.

...