Shell脚本监视日志文件,如果关键字触发然后执行命令?

时间:2010-12-02 03:10:54

标签: linux logfiles shell

是否有一种廉价的方法来监控tail -f log.txt之类的日志文件,如果出现类似[error]的内容,请执行命令?

谢谢。

5 个答案:

答案 0 :(得分:50)

tail -fn0 logfile | \
while read line ; do
        echo "$line" | grep "pattern"
        if [ $? = 0 ]
        then
                ... do something ...
        fi
done

答案 1 :(得分:13)

我还发现你可以使用awk监视模式并在找到模式时执行一些操作:

tail -fn0 logfile | awk '/pattern/ { print | "command" }'

这将在日志中找到模式时执行命令。命令可以是任何unix命令,包括shell脚本或其他任何内容。

答案 2 :(得分:4)

更强大的方法是monit。这个工具可以监控很多东西,但其中一个就是它可以轻松地拖动一个或多个日志,匹配正则表达式然后触发脚本。如果您要监视的日志文件集合或要触发的多个事件,这将特别有用。

答案 3 :(得分:0)

击球手和简单:

tail -f log.txt | egrep -m 1 "error"
echo "Found error, do sth."
...

答案 4 :(得分:-1)

Simple Automated Solution that covers a lot of scenarios:

用法:

logrobot localhost [default-dir],fixer,[exit-codes],[command/script-to-run-per-exit-code] [feature] [logfile] [age] [str-1] [str-2] [WARN] [CRIT] [tag] [option]

示例:

logrobot  localhost  /tmp/logXray,fixer,0y-1y-2y,0-uname,1-who,2-uptime  autonda  /var/log/kern.log  60m  'error'  '.'  1  2  app_err_monitor  -ndshow

使用此工具,您可以监视日志文件中的特定模式,然后在找到模式时触发命令或脚本...或者找不到!

可以根据阈值和退出代码将脚本或命令设置为运行。

工具可以直接下载here