Где журнал cron /crontab?
Я хочу проверить, выполняется ли мое задание cron и в какое время. Я считаю, что есть журнал для моих sudo crontab -e
заданий, но где?
Я искал google и нашел рекомендации для поиска в /var/log
(в котором я ничего не вижу с 'cron' в имени) и для редактирования файла /etc/syslog.conf
, который у меня также нет.
7 ответов
При установке по умолчанию задания cron регистрируются в
/var/log/syslog
Вы можете видеть только задания cron в этом файле журнала, запустив
grep CRON /var/log/syslog
Если вы ничего не переконфигурировали, записи будут там.
Вы можете создать файл cron.log, содержащий только записи CRON, которые отображаются в syslog. Обратите внимание, что задания CRON будут отображаться в syslog, если вы будете следовать следующим указаниям.
Откройте файл
/etc/rsyslog.d/50-default.conf
Найдите строку, которая начинается с:
#cron.*
раскомментируйте эту строку, сохраните файл и перезапустите rsyslog:
sudo service rsyslog restart
Теперь вы должны увидеть файл журнала cron:
/var/log/cron.log
Активность Cron теперь будет регистрироваться в этом файле (в дополнение к syslog).
Обратите внимание, что в cron.log вы увидите записи, когда cron запускал скрипты в /etc/cron.hourly, cron.daily и т. д. - например. что-то вроде:
Apr 12 14:17:01 cd CRON[14368]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Однако вы не увидите больше информации о том, какие сценарии были фактически запущены внутри /etc/cron.daily или /etc/cron.hourly, если только эти сценарии не вызывают прямой вывод в cron.log (или, возможно, в какой-то другой файл журнала ).
Если вы хотите проверить, запущен ли crontab и не нужно искать его в cron.log или syslog, создайте crontab, который перенаправляет вывод в файл журнала по вашему выбору - что-то вроде:
01 14 * * * /home/joe/myscript >> /home/log/myscript.log 2>&1
Это перенаправит все стандартные выходные данные и ошибки, которые могут быть созданы скриптом, который запускается в указанном файле журнала.
Иногда бывает полезно постоянно следить за ним, в этом случае:
tail -f /var/log/syslog | grep CRON
Вы также можете направлять вывод отдельных cronjobs в свои собственные журналы для лучшей читаемости, вам просто нужно будет добавлять выходные данные где-нибудь.
0 15 * * * /home/andrew/daily-backup.sh >> /var/log/daily-backup.log 2>&1
Это очень старый вопрос, но ни один из этих ответов не кажется удовлетворительным.
Сначала запустите каждое задание cron каждую минуту, затем запустите cron как не-daemon (временно, просто убейте любой сард, который, возможно, уже был запущен) с протоколом тестирования:
crond -nx test
И посмотрите журнал выполнения вашей программы, протекающий через ваш терминал.
Он по умолчанию находится в /var/log/syslog
.
Но он может быть настроен для создания отдельного cron.log, что более полезно.
Этот Q & A описывает процесс:
16.04: Как сделать cron create cron.log и контролировать его в режиме реального времени?
Также в этом ответе приведены инструкции по созданию команды wcron
, которая отображает ее почти в режиме реального времени. Кроме того, он ссылается на другой ответ,
Как изменить уровень журнала cron?
, который показывает, как изменить уровень журнала, чтобы включить больше, чем просто начало заданий - уровень 15 также покажет ошибки и время окончания.
Вы можете перенаправить вывод cron в файл tmp
Например: 00 11 07 * * /bin /bash /home/ubuntu/command.sh> /tmp /output 2 & 1
Ошибка и нормальный вывод, оба будут перенаправлены в один и тот же файл