Проверка работы cron в Unix/Linux

Проверка работы cron в Unix/Linux

Cron — это демон, который запускает задачи по указанному (заданному) времени и  который работает в наиболее распространенных дистрибутивах Unix / Linux. Поскольку cronjobs основаны на времени, иногда необходимо проверить и убедиться, что задание выполнялось в запланированное время. Иногда люди настраивают cron чтобы они отправляли вывод скрипта через системную почту или перенаправляюте вывод в файл; однако не все кроны настроены одинаково, и мние из них, могут быть настроены на отправку вывода в /dev/null, и тем самым, препятствуя любой возможности проверить выполняемое задание.

Создать cron задание

Первое что стоит проверить — это наличие ПИДа по крону:

# pgrep crond

Или:

# ps ax | grep crond | grep -Ev grep

crond, если он не настроен иначе, будет отправлять сообщение журнала в syslog каждый раз, когда он вызывает запланированное задание. Самый простой способ проверить работу cron на попытку срабатываания задание, — это проверить лог-файл.

В зависимости от Unix/Linux ОС, данный файл может иметь другое название.

Если у вас, CentOS/Fedora/RedHat, то просмотреть нужно:

# less /var/log/cron

Можно отсеять ненужное и поискать только необходимую крон-джобу, например:

# cat /var/log/cron| grep -E "back"

Nov 28 00:00:01 linux-notes CROND[212211]: (root) CMD (/usr/bin/bash /home/linux/scripts/backUPs.sh)
Dec 1 00:00:01 linux-notes CROND[126039]: (root) CMD (/usr/bin/bash /home/linux/scripts/backUPs.sh)

Собственно, все наглядно видно.

Если у вас, Ubuntu/Debian, то просмотреть нужно:

# less /var/log/syslog

Иногда, системные администраторы меняют вывод крона и для того, чтобы проверить куда пишуться логи по cron-job-ам, выполните:

# grep cron /etc/rsyslog.conf

*.info;mail.none;authpriv.none;cron.none                /var/log/messages
# Log cron stuff
cron.*                                                  /var/log/cron

С вывода видно, что у меня используется стандартный файл.

Так же, стоит проверить как настраивали крон-джобы:

# crontab -l

ИЛИ:

# crontab -l -u some_another_user

Возможно было перенаправление вывода в какой-то файл для дальнейшего анализа.

Стоит отметить, то — что некоторые кроны лежат тут:

# ls -lah /etc/cron.daily/
# ls -lah /etc/cron.hourly/
# ls -lah /etc/cron.weekly/
# ls -lah /etc/cron.monthly/

Бывает некоторые задачи запихивают туда.

Чтобы запретить или разрешить добавление крон-задат, нужно прописать юзера в:

# vim /etc/cron.d/cron.allow
# vim /etc/cron.d/cron.deny

Так же, можно восспользоватся следующими командами для проверки статуса, запуска/остановки/перезапуска службы:

# service cron status 
# service cron start 
# service cron stop
# service cron restart

Это все действия были для Linux, но сейчас приведу пример и для mac os x.

Недавно мне пришлось отлаживать работу Cron и проверять, действительно ли она выполняется по заданному расписанию. Я начал искать и проверять все логи и… нашел вроде бы подходящий файл для этого:

# grep cron /var/log/system.log

Но в нем не было признаков логирования крона!

Включить logging для Cron в Mac OSX

Открываем:

# vim /etc/syslog.conf

И прописываем:

cron.* /var/log/cron.log

Для перезапуска syslog-а, выполняем:

# launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist
# launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist

Проверяем что получилось!

А для помощи, можно вызвать:

# man crontab

А на этом, у меня все, статья «Проверка работы cron в Unix/Linux» завершена.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.