我有一个日志文件偶尔有重大错误。 每次发生严重错误时,我都会收到一封电子邮件,通知我有关更改的信息。 有没有一个unix工具/一套unix工具,我可以适应这个目的?
我想到的是
tail -f logfile | grep CRITICAL > critical.errors watch tail critical.errors # And somehow, email on changes.
但是,watch命令不会采取行动。 所以…有没有像“看”那样的东西。 或者可能是一个好的现有脚本来做到这一点? 我可以自制一个bash / python解决scheme,但我宁愿重复使用现有的工具来清理error handling等。
尝试IWatch – 这是一个基于inotify的perl脚本,只是你需要的:
http://sourceforge.net/projects/iwatch/
你也可以用inotify-tools来推出你自己的,特别是inotifywait 。 修改该页面的示例#2(未经testing):
#!/bin/sh file=logfile cp $file $file.last while true; do EVENT=$(inotifywait --format '%e' $file) [ $? != 0 ] && exit [ "$EVENT" = "MODIFY" ] && ( diff $file $file.last | mail ... ) && cp $file $file.last done
你也可以保留一个字节/行计数器,只发送新的字节/行,但使用差异更简单。 如果文件变大而且不断变化,可能会导致性能问题。