Evite pids duplicados ao usar um padrão

4

Eu escrevi um script de shell que lê os logs de atualização e envia uma notificação por e-mail quando há um OOM usando o while loop.

Eu posso obter a notificação por e-mail para erros do OOM, mas toda vez que um PID duplicado é gerado para o e-mail enviado, o que está criando um enorme não. de pids duplicados, enquanto estou grepping para esse processo em particular / servidor Admin (weblogic). PFB meu script, existe alguma maneira que eu possa evitar os PIDs duplicados e pode obter apenas PID pai ao fazer um 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
    
por user174783 13.07.2013 / 08:35

2 respostas

4

Você pode usar uniq ou sort -u :

echo "$line" | grep -i "$pattern" | uniq
    
por Radu Rădeanu 13.07.2013 / 09:17
0
ps wp PID|grep PID

Você pode fazê-lo sem o grep - você encontrará com o grep que você remove o cabeçalho.

    
por Vahid 24.08.2013 / 00:54

Tags