Frage Vermeiden Sie doppelte PIDs, während Sie nach einem Muster suchen


Ich habe ein Shell-Skript geschrieben, das die Update-Protokolle liest und eine E-Mail-Benachrichtigung sendet, wenn OOM die While-Schleife verwendet.

Ich bin in der Lage, die E-Mail-Benachrichtigung für OOM-Fehler zu erhalten, aber jedes Mal, wenn eine doppelte PID für die gesendete E-Mail generiert wird, die eine riesige Nein erstellt. von doppelten PIDs, während ich für diesen bestimmten Prozess / Admin-Server (Weblogic) grepping bin. PFB mein Skript, gibt es einen Weg, wie ich die doppelten PIDs vermeiden kann und nur Eltern-PID bekommen kann, während ich einen Grep mache.

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


Ursprung




Antworten:


Sie können verwenden uniq oder sort -u:

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

4
2017-07-13 07:17



Hallo, Danke für den Vorschlag. Ich habe versucht, diese Optionen zu verwenden, aber wenn ich uniq oder sort -u benutze, erhalte ich die E-Mail-Benachrichtigung für die Nachricht "java.lang.OutOfMemoryError: Java heap space" nicht und erhalte die Benachrichtigungen für andere Nachrichten. Auch wenn ich eine Grep mache, d. H. Ps -ef | Grep AdminServer - zusammen mit der Eltern-PID produziert es einige andere PIDs wie unten .. - user174783


ps wp PID|grep PID

Du kannst es ohne Grep machen - du wirst mit grep den Header entfernen ..


0
2017-08-23 22:54