Как я могу определить проблемы с /etc/crontab
не запускаются команды cron? У меня есть сценарии, которые отправляют электронные письма, я могу запускать их вручную через командную строку, и они отлично работают, но никогда не обрабатываются cron ....
Что я могу сделать, чтобы выяснить, почему cron не работает?
У меня такое чувство, что это часть проблемы ...
$ sudo /etc/init.d/crond start
sudo: /etc/init.d/crond: command not found
У вас есть несколько вариантов, не в каком-то определенном порядке.
Запустите команду, которая у вас есть в crontab, в командной строке. Это может быть обманчивым, поскольку часто это срабатывает для вас, а причина, по которой он не работает в cron, - это отсутствующая переменная среды или что-то в этом роде.
Добавьте параметр вывода в строку crontab, например:
5 */2 * * * /usr/local/bin/do-stuff.sh >> /tmp/results.log;
Убедитесь, что cron действительно запущен.
Проверьте файлы журнала cron на наличие конкретных ошибок.
В дополнение к ответам @muffinista и @brent есть и другие эзотерические проблемы, с которыми вы можете столкнуться в Ubuntu.
cron отправляет записи crontab через / bin / sh (по умолчанию), поэтому такие простые вещи, как это, не работают, но работают при вставке в ваш терминал / bin / bash
0 * * * * echo hi >& /dev/null
так что измените SHELL или синтаксис перенаправления!
Моя версия Ubuntu игнорирует настройки в / etc / defaults / cron, поэтому для увеличения уровня журнала вам может потребоваться запустить демон cron вручную (cron -f -L 2).
В некоторых недавних случаях это происходило из-за того, что люди редактировали файлы в /etc/crontab
без отправки crond сигнала 1 (SIGHUP), чтобы он знал, что он должен перечитать /etc/crontab
файл.
Пытаться
kill -1 $PID-OF-CROND
и посмотрите, поможет ли это. Определение pid crond остается для вас в качестве упражнения ;-) - не в последнюю очередь потому, что если вы не можете его найти, это может означать, что crond не работает, и тогда вы найдете свою проблему!
Если вы используете shellscript, люди часто забывают, что команды, которые они используют в своем скрипте, могут не находиться в PATH cron (например, что-то в /opt
). При необходимости настройте ваш PATH в начале вашего скрипта. Для sh / bash это будет:
PATH=$PATH:/opt/something-1.0/bin
например