Назад | Перейти на главную страницу

Избегайте шума журнала из заданий cron - с помощью syslog-ng, а не syslog

На моем небольшом веб-сервере Debian squeeze у меня установлен syslog-ng (не syslogd, как в этот вопрос). Как правило, мои журналы тихие и приятные, с

-- MARK -- 

линий. Мой /var/log/syslog, впрочем, завален этим

Sep 23 23:09:01 bookchin /USR/SBIN/CRON[24885]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete > /dev/null)
Sep 23 23:09:01 bookchin /USR/SBIN/CRON[24886]: (root) CMD (  [ -d /var/lib/php4 ] && find /var/lib/php4/ -type f -cmin +$(/usr/lib/php4/maxlifetime) -print0 | xargs -r -0 rm > /dev/null)
Sep 23 23:17:01 bookchin /USR/SBIN/CRON[24910]: (root) CMD (   cd / && run-parts /etc/cron.hourly)

вид мусора. Как правильно этого избежать (опять же, с помощью syslog-ng)?

Для syslog-ng он немного отличается от обычного syslog: вам нужно добавить cron в фильтр, связанный с /var/log/syslog. В /etc/syslog-ng/syslog-ng.confзамените это:

filter f_syslog3 { not facility(auth, authpriv, mail) and not filter(f_debug); };

с участием:

filter f_syslog3 { not facility(cron, auth, authpriv, mail) and not filter(f_debug); };

и вы сделали.

Другой вариант - запретить cron регистрировать что-либо, кроме ошибок:

изменение /etc/default/cron:

  # Or, to log standard messages, plus jobs with exit status != 0:
  # EXTRA_OPTS='-L 5' 
  #
  # For quick reference, the currently available log levels are:
  #   0   no logging (errors are logged regardless)
  #   1   log start of jobs
  #   2   log end of jobs
  #   4   log jobs with exit status != 0
  #   8   log the process identifier of child process (in all logs)
  #
  EXTRA_OPTS="-L 0"

По умолчанию строка EXTRA_OPTS - ""

Дополнение:

Кто-то неправильно отредактировал этот ответ, чтобы он выглядел так, как будто -L 0 предотвратит регистрацию cron "вообще". Это неверно. Обратите внимание на описание 0 в тексте, который я написал:

 #   0 no logging (errors are logged regardless)

Или просто используйте 4:

  #   4   log jobs with exit status != 0

OP хотел избежать появления сообщения журнала каждую минуту при запуске задания cron. Хорошим вариантом является регистрация только ошибок или ошибок и ненулевых статусов выхода.