Você pode usar uniq
ou sort -u
:
echo "$line" | grep -i "$pattern" | uniq
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
Você pode usar uniq
ou sort -u
:
echo "$line" | grep -i "$pattern" | uniq
ps wp PID|grep PID
Você pode fazê-lo sem o grep - você encontrará com o grep que você remove o cabeçalho.
Tags grep