在Linux中检测并通过电子邮件发送文本文件中的新行

有这个日志文件,我们希望留意。 通常它不会收到任何更新。 但每周一次或两次更新,当它发生时,我们希望得到通知。

是否有任何方法来定期检查(cron-job)并检测这样的文本文件中的变化,并让linux发送关于这个变化的电子邮件。 如果电子邮件会包含新的内容,那也是很好的,但是如果没有后者的意愿,我们可以生活。

对于一个快速而脏的文件内容testing系统,我build议使用Monit及其文件内容服务testing 。 默认情况下,Monit守护进程会每30或60秒检查一次(可configuration),但是这是一个简单的方法来完成你所要求的。 电子邮件通知或其他动作很容易configuration。

他们的例子:

check file syslog with path /var/log/syslog ignore match "^\w{3} [ :0-9]{11} [._[:alnum:]-]+ monit\[[0-9]+\]:" ignore match /etc/monit/ignore.regex if match "^\w{3} [ :0-9]{11} [._[:alnum:]-]+ mrcoffee\[[0-9]+\]:" if match /etc/monit/active.regex then alert 

如果您正在使用Nagios,请查看check_logfiles插件:

 Name : check_logfiles Arch : x86_64 Version : 3.4.2 Release : 1.el5.rf Size : 167 k Repo : installed Summary : Logfile check plugin for nagios URL : http://sourceforge.net/projects/check-logfiles License : GPL Description: check_logfiles is a plugin for Nagios which searches for patterns in logfiles. It is capable of scanning : multiple logfiles and their rotated ancestors in a single run. 

例如:

# /usr/lib64/nagios/plugins/check_logfiles --logfile='/var/log/mysqld.log' --criticalpattern='is marked as crashed'

OK - no errors or warnings|default_lines=0 default_warnings=0 default_criticals=0 default_unknowns=0