在 grep 模式时避免出现重复的 pid

在 grep 模式时避免出现重复的 pid

我编写了一个 shell 脚本,它读取更新日志,并在出现 OOM 时使用 do while 循环发送电子邮件通知。

我可以收到 OOM 错误的电子邮件通知,但每次发送的电子邮件都会生成重复的 PID,当我针对该特定进程/管理服务器 (weblogic) 进行 grep 时,会产生大量重复的 PID。PFB 我的脚本,有什么方法可以避免重复的 PID,并且在执行 grep 时只能获取父 PID。

#!/bin/sh
# Script to read the updating log file and send mail for any errors : LogCheck.sh
# SET VARIABLES
logfile=BEA_HOME/SERVERS/Admin.log
pattern="java.lang.OutOfMemoryError: Java heap space" 

#Read each line as it gets updating to the log file
tail -fn0 $logfile | while read line ; do 

    #check each line for our pattern
    echo "$line" | grep -i "$pattern"

    #Perform the below action if a line matches with our pattern
    if [ $? = 0 ]; 

    then
        #Send an email 
        echo "Found an error: $line" | mailx -s "please check the error" emailID 
    fi

done

答案1

您可以使用uniq或者sort -u

echo "$line" | grep -i "$pattern" | uniq

答案2

ps wp PID|grep PID

如果没有 grep 您就无法做到这一点 - 您会发现使用 grep 您可以删除标题..

相关内容