Вопрос Избегайте дублирования pids, в то время как grepping для шаблона


Я написал сценарий оболочки, который читает журналы обновлений и отправляет уведомление по электронной почте, когда есть OOM, используя цикл while.

Я могу получить уведомление по электронной почте для ошибок OOM, но каждый раз, когда создается дублирующийся PID для отправленного сообщения, которое создает огромное число. дубликатов, пока я готов для этого конкретного процесса / сервера администратора (weblogic). PFB мой сценарий, есть ли способ избежать дублирования PID и может получить только родительский PID при выполнении grep.

#!/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

4
2017-07-13 06:35


происхождения




ответы:


Вы можете использовать uniq или sort -u:

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

4
2017-07-13 07:17



Привет, Спасибо вам за предложение. Я попытался использовать эти параметры, но когда я использую uniq или sort -u, я не получаю уведомление по электронной почте для сообщения «java.lang.OutOfMemoryError: Java heap space», получая уведомления для других сообщений. Также когда я делаю grep i.e ps -ef | grep AdminServer - вместе с родительским pid производит несколько других PID, как показано ниже. - user174783


ps wp PID|grep PID

Вы можете сделать это без grep - вы найдете с grep вы удалите заголовок ..


0
2017-08-23 22:54