45

有没有一种便宜的方法来监控像这样的日志文件tail -f log.txt,然后如果出现类似的东西[error],执行命令?

谢谢你。

4

4 回答 4

65
tail -fn0 logfile | \
while read line ; do
        echo "$line" | grep "pattern"
        if [ $? = 0 ]
        then
                ... do something ...
        fi
done
于 2010-12-02T03:16:33.000 回答
14

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

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

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

于 2013-04-19T19:51:24.740 回答
5

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

于 2013-07-14T12:00:38.820 回答
2

更好更简单:

tail -f log.txt | egrep -m 1 "error"
echo "Found error, do sth."
...
于 2017-07-26T08:04:51.773 回答