有什么方法可以从Linux日志文件中排除特定条目?


3

具体来说,我试图在Ubuntu Server(强壮的LTS)下保持良好的干净cron.log。除了预安装的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)

由于此操作每隔一小时执行一次,并且产生相对较长的日志条目,因此它占了我的cron.log的90%。如果我翻阅日志文件以确保执行了我的日常备份脚本之类的脚本,则所有这些条目都会将其吞噬。

我有什么办法可以排除此过程的记录?

我意识到我可以使用grep或日志读取器程序进行搜索,但这并不是我真正想要的。我只希望能够“ cat cron.log | less”,并且可以从我不在乎的进程中获取日志垃圾邮件(并且我也意识到,此过程在大多数Web服务器上都非常重要,但这不是主要不是网络服务器,甚至不允许公司外部的连接)。

Answers:


5

任何最新的syslog守护程序(例如syslog-ng或rsyslog)都支持过滤器功能。只需编辑您的rsyslog.confsyslog-ng-conf即可忽略/USR/SBIN/CRON包含字符串的进程名称条目CMD

更好的是:您只需将这些消息记录到另一个文件中(例如cron-detail.log)。

文档链接:


1

...或者您可以懒惰地通过日志传送日志grep -v FILTERSTRING;)


1

如果我翻阅日志文件以确保执行了我的日常备份脚本之类的脚本,则所有这些条目都会将其吞噬。

好吧,cron.log之类的系统日志并不是真的应该定期查看。如果无法运行作业,或无法在stderr上生成输出,无论如何您都会收到邮件。

如果您希望收到有关您的cron作业已运行的肯定通知,请让重要的作业编写一个单独的日志文件,例如Important.log。然后,您会以自己喜欢的格式获得一个包含有趣信息的日志文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.