有没有一种便宜的方法来监控像这样的日志文件tail -f log.txt
,然后如果出现类似的东西[error]
,执行命令?
谢谢你。
tail -fn0 logfile | \
while read line ; do
echo "$line" | grep "pattern"
if [ $? = 0 ]
then
... do something ...
fi
done
我还发现您可以使用 awk 来监视模式并在找到模式时执行一些操作:
tail -fn0 logfile | awk '/pattern/ { print | "command" }'
当在日志中找到模式时,这将执行命令。命令可以是任何 unix 命令,包括 shell 脚本或其他任何东西。
更强大的方法是monit。这个工具可以监控很多事情,但其中之一是它可以轻松地跟踪一个或多个日志,匹配正则表达式,然后触发脚本。如果您要监视一组日志文件或要触发多个事件,这将特别有用。
更好更简单:
tail -f log.txt | egrep -m 1 "error"
echo "Found error, do sth."
...