Как писать CRON логи в отдельный файл

По умолчанию cron логи пишутся в файл /var/log/syslog, а результат выполнения заданий отправляется на email пользователю от имени которого выполняется задание, например при выполнении скрипта у меня добавлялась запись в /var/log/syslog:

CRON[33522]: (root) CMD (/scripts/ixnfo.sh >/dev/null 2>&1)

Кстати чтобы результат выполнения не отправлялся на email в конце команды у меня как раз добавлено:

>/dev/null 2>&1

Чтобы дублировать сообщения в отдельный файл, то откроем конфигурацию /etc/rsyslog.d/50-default.conf и раскомментируем строку:

cron.*      /var/log/cron.log

Чтобы логи CRON писались только в отдельный файл и не писались в /var/log/syslog, то строку выше не трогаем, а откроем в текстовом редакторе конфигурацию /etc/rsyslog.conf и после:

###########################
#### GLOBAL DIRECTIVES ####
###########################

Добавим:

:programname, startswith, "CRON" /var/log/cron.log
:programname, startswith, "CRON" stop

Проверим корректность конфигурации rsyslog:

rsyslogd -N 1

Перезапустим rsyslog чтобы применить изменения:

service rsyslog restart

Кстати еще можно указать так:

:programname, startswith, "CRON", -/var/log/cron.log
& ~

Либо так:

if ( $programname startswith "CRON" ) then {
    action(type="omfile" file="/var/log/cron.log" flushOnTXEnd="off")
    stop
}

Или так:

if $programname startswith "CRON" then -/var/log/cron.log
&~

Смотрите также мои статьи:
Использование и настройка CRON
Установка Rsyslog + Loganalyzer + MySQL

Оставьте комментарий

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