用最小的成本实现的一个日志监控程序,示例如下:
#!/bin/shsleep 5mlog=/var/log/php5.logtail -Fn0 $log | \while read line; do echo $line | grep 'Fatal error' if [ $? = 0 ] then pids=$(ps aux | grep $0 | grep -v 'grep' | awk '{print $2}') php mail_error.php 'PHP Fatal error' "$line" # do what you want to do sh $0 "$@" & [ "$pids" != "" ] && kill -9 $pids fidone
代码副本:https://gist.github.com/tomheng/7600651
程序会在找到第一个错误的时候后会重新启动自己(先kill 掉自己,然后再启动),此外程序开始的时候会有一个休眠时间。这样做防止同一个错误被不断的报错,特别是访问量大的时候可以会造成问题(如果有报警的话,也会造成干扰)。当然这样同时也产生了一个负面问题,因为有休眠时间,所以有可能会漏掉一部分错误日志,不过这个应该影响不大。
发邮件的话可以用PHPMailer,简单实用,特别是对那些没有安装软件权限的主机。
顺祝周末愉快,亲~
评论| 作者: tomheng 85159e08d5f1f50d244825cb03e92c65用最小的成本实现的一个日志监控程序,示例如下: 1234567891011121314#!/bin/sh sl […] 我走得很慢!但我从不后退!