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

Есть ли способ исключить определенные записи из файлов журнала Linux?

В частности, я пытаюсь сохранить хороший чистый журнал cron.log под Ubuntu Server (надежный LTS). В дополнение к 4 или 5 заранее установленным заданиям cron, я добавил 4 своих собственных задания (используя метод cron.d). Теперь одно из автоматически устанавливаемых заданий - это сценарий истечения срока сеанса PHP, который запускается каждый час.

Конечно, его нужно выполнить, но, честно говоря, меня не волнует, когда он выполняется. Он запускается каждый час и выводит запись, аналогичную приведенной ниже.

Oct 18 02:17:01 cobalt /USR/SBIN/CRON[18160]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Oct 18 02:39:01 cobalt /USR/SBIN/CRON[18233]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -r -0 rm)

Так как это выполняется каждый час и производит сравнительно длинную запись в журнале, на него приходится 90% моего cron.log. Если я пролистываю файл журнала, чтобы убедиться, что мои ежедневные сценарии резервного копирования и тому подобное были выполнены, все эти записи проглатывают их.

Есть ли способ исключить этот процесс из журнала?

Я понимаю, что могу использовать grep или программу чтения журналов для поиска, но это не совсем то, что я ищу. Я хотел бы просто иметь возможность "cat cron.log | less" и просматривать без спама в журналах от процессов, которые меня не волнуют (и я также понимаю, что этот процесс будет важен для большинства веб-серверов, но это не это в первую очередь веб-сервер и даже не позволяет подключение извне).

Любой недавний демон syslog (например, syslog-ng или rsyslog) поддерживает функцию фильтрации. Просто отредактируйте свой rsyslog.conf или syslog-ng-conf игнорировать записи для имени процесса /USR/SBIN/CRON которые содержат строку CMD.

Еще лучше: вы просто записываете эти сообщения в другой файл (например, cron-detail.log).

Ссылки на документацию:

Если я пролистываю файл журнала, чтобы убедиться, что мои ежедневные сценарии резервного копирования и тому подобное были выполнены, все эти записи проглатывают их.

Что ж, системные журналы, такие как cron.log, на самом деле не предназначены для регулярного просмотра. Если задание не может быть запущено или выводится на stderr, вы все равно получите почту.

Если вы хотите получить положительное уведомление о том, что ваши задания cron были запущены, пусть важные задания записывают отдельный файл журнала, например important.log. Тогда вы получите лог-файл с именно интересной информацией в нужном вам формате.

... или вы можете просто полениться и пропустить журналы через grep -v FILTERSTRING ;)