首页 > 解决方案 > 脚本 bash 始终是一个日志文件,当匹配特定单词时,发送邮件

问题描述

我已经搜索了所有线程,但我不知道如何解决我非常简单的问题..

我认为这很简单,但我不是 bash 专家..

我需要一个在日志文件中执行连续尾部的 bash 脚本,当 grep “失败”一词时,执行另一个命令并向我发送邮件(但尾部命令不能停止)

我想我需要一个“for loop”或“while read”或“if then else”命令。我尝试了不同的方法,但找不到工作脚本..

非常感谢您的帮助!

标签: bashsendmaillogfile

解决方案


最有可能的是,使用标准 Linux 实用程序更简单、更好,而不是使用 bash 实现此功能:

tail -f log-file | stdbuf -oL grep fail | xargs -L1 send-mail-alert

你已经发现你需要tail/grep。你需要两个额外的成分:stdbuf 和 xargs

stdbuf 将强制“行缓冲”,导致“失败”消息发送到“xargs”程序而没有(缓冲)延迟。

'xargs' 命令将在每次出现'fail' 时激活脚本'send-mail-alert'。您可以内联邮件传递,并使用脚本


推荐阅读