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

发布于 2024-10-05 17:23:56 字数 111 浏览 8 评论 0原文

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

谢谢。

Is there a cheap way to monitor a log file like tail -f log.txt, then if something like [error] appears, execute a command?

Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

软甜啾 2024-10-12 17:23:56
tail -fn0 logfile | \
while read line ; do
        echo "$line" | grep "pattern"
        if [ $? = 0 ]
        then
                ... do something ...
        fi
done
tail -fn0 logfile | \
while read line ; do
        echo "$line" | grep "pattern"
        if [ $? = 0 ]
        then
                ... do something ...
        fi
done
凝望流年 2024-10-12 17:23:56

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

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

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

I also found that you can use awk to monitor for pattern and perform some action when pattern is found:

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

This will execute command when pattern is found in the log. Command can be any unix command including shell scripts or anything else.

罪歌 2024-10-12 17:23:56

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

An even more robust approach is monit. This tool can monitor very many things, but one of them is that it will easily tail one or more logs, match against regex and then trigger a script. This is particularly useful if you have a collection of log files to watch or more than one event to trigger.

音栖息无 2024-10-12 17:23:56

更好更简单:

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

Better and simple:

tail -f log.txt | egrep -m 1 "error"
echo "Found error, do sth."
...
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文