Linux SystemOut.log文件字符串搜索、计数并在计数达到10时通过电子邮件发出警报

Linux SystemOut.log文件字符串搜索、计数并在计数达到10时通过电子邮件发出警报,linux,unix,solaris,tail,Linux,Unix,Solaris,Tail,我想使用tail-f监视SystemOut.log文件,所以我尝试了tail-f,但它不允许我同时执行其他操作。我可能错过了一些东西,你们可以帮我。我搜索了一下,但找不到答案 问:每隔5分钟,我将触发下面的脚本,使用带grep的tail-f计算“string”出现的次数,并将其写入一个名为msg.txt的文件(它的solaris so-q在grep中不起作用,这里有任何建议欢迎) 同时,计算字符串出现次数并检查计数是否达到10,然后触发带有msg.txt文件的电子邮件。最后,停止while,我不

我想使用tail-f监视SystemOut.log文件,所以我尝试了tail-f,但它不允许我同时执行其他操作。我可能错过了一些东西,你们可以帮我。我搜索了一下,但找不到答案

问:每隔5分钟,我将触发下面的脚本,使用带grep的tail-f计算“string”出现的次数,并将其写入一个名为msg.txt的文件(它的solaris so-q在grep中不起作用,这里有任何建议欢迎)

同时,计算字符串出现次数并检查计数是否达到10,然后触发带有msg.txt文件的电子邮件。最后,停止while,我不希望它在达到其计数值10时继续。这个程序将每5分钟触发一次,我只想确保它在计数达到10时终止。如果计数在5分钟内未达到10,我将如何停止此脚本,因为它将再次触发

while true ; do

  tail -f SystemOut.log | grep "string" > msg.txt # SystemOut.log for currently running process 

  Count = Count + 1 

  if test $Count == 10

    mail -s "Email Subject" abc@abc.com < msg.txt 

    break

  fi  

done
为true时;做
tail-f SystemOut.log | grep“string”>msg.txt#SystemOut.log用于当前运行的进程
计数=计数+1
如果测试$Count==10
邮件-s“电子邮件主题”abc@abc.com
重写相同的代码时有点不同,但是无法打开grep-c文件的问题,我不知道是什么导致了这个问题。非常感谢您的帮助

虽然真实

COUNT_1=grep-c“搜索字符串”日志文件

睡眠300
COUNT_2=grep-c“搜索字符串”日志文件 计数=[$COUNT\u 2-$COUNT\u 1]]

如果[[$COUNT>10]]
然后 echo$COUNT fi


完成

如果我正确理解了你的问题,类似的方法可能会奏效:

grep 'string' SystemOut.log > msg.txt

count=`wc -l msg.txt`

if [[ $count == "10" ]]; 
  mail -s "Email Subject" abc@abc.com < msg.txt   
fi
grep'string'SystemOut.log>msg.txt
count=`wc-l msg.txt`
如果[[$count==“10”];
邮件-s“电子邮件主题”abc@abc.com
谢谢你,蒂姆。我试过你的代码,你的代码发生的事情是grep命令继续将搜索字符串行写入msg.txt而不停止,因此计数和if条件从未达到。我使用的SystemOut.log文件将是一个日志文件,每秒写入100行。因此,我想跟踪日志并对其进行计数,检查计数是否达到最大值,如果达到,则发送电子邮件,否则继续计数。