Câu hỏi Tránh trùng lặp pids trong khi grepping cho một mô hình


Tôi đã viết một kịch bản lệnh vỏ mà đọc các bản ghi cập nhật và gửi một thông báo email khi có OOM sử dụng làm trong khi vòng lặp.

Tôi có thể nhận được thông báo email cho lỗi OOM nhưng mỗi khi một bản sao PID được tạo ra cho các email gửi được tạo ra một không lớn. của các bản sao trùng lặp trong khi tôi đang tìm kiếm quy trình cụ thể / máy chủ Quản trị (weblogic). PFB kịch bản của tôi, là có cách nào tôi có thể tránh các PID trùng lặp và có thể nhận được chỉ cha mẹ PID trong khi làm một 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


gốc




Các câu trả lời:


Bạn có thể dùng uniq hoặc là sort -u:

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

4
2017-07-13 07:17



Xin chào, Cảm ơn bạn đã đề xuất. Tôi đã thử sử dụng các tùy chọn này nhưng khi tôi sử dụng uniq hoặc sắp xếp -u, tôi không nhận được thông báo qua email cho thông báo "java.lang.OutOfMemoryError: Java heap space", nhận thông báo cho các thư khác. Ngoài ra khi tôi làm một grep i.e ps -ef | grep AdminServer - cùng với cha mẹ pid nó được sản xuất một số PID khác như dưới đây .. - user174783


ps wp PID|grep PID

Bạn ca làm điều đó mà không có grep - bạn sẽ tìm thấy với grep bạn loại bỏ tiêu đề ..


0
2017-08-23 22:54