grep은 지난 한 시간 동안 로그 파일에서 패턴을 찾습니다.

grep은 지난 한 시간 동안 로그 파일에서 패턴을 찾습니다.

내 bash 버전은 GNU bash, 버전 4.1.2(1)-release (x86_64-redhat-linux-gnu)입니다.

지난 한 시간 동안 로그 파일에 추가되었을 수 있는 패턴을 검색하려고 합니다. 포럼에서 제안된 다른 솔루션을 살펴봤지만 제게는 효과가 없었습니다. 도와주세요.

이것이 내가 시도한 것이지만 나에게는 효과가 없습니다.

  1. grep "^$(date -d '-1 hour' +'%H')" /space/log/server.log grep '오류'
  2. grep -E "^($(date-d '-1시간' '+%H')|$(date'+%H')):[0-9]{2}:[0-9]{2 }" /space/log/server.log | grep '오류'

내 샘플 로그 파일은 다음과 같습니다.

[9/2/20 3:09:56:166 CDT] 0000010c SystemErr R java.lang.NullPointerException 
[9/2/20 3:09:56:166 CDT] 0000010c SystemErr R at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:48) 
[9/2/20 3:09:56:166 CDT] 0000010c SystemErr R at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:69) 
[9/2/20 3:09:56:166 CDT] 0000010c SystemErr R at java.lang.reflect.Field.set(Field.java:670) 
[9/2/20 3:09:56:166 CDT] 0000010c SystemErr R at sun.reflect.GeneratedMethodAccessor2124.invoke(Unknown Source) – 

지난 한 시간 동안의 패턴을 로그 파일에서 검색하고 이메일 알림을 보내고 싶습니다. 스크립트는 매시간 cron을 통해 실행되도록 예약됩니다.

이 샘플 파일에는 오류가 없습니다. 이 파일에서 오류와 예외를 검색하겠습니다. 기본적으로 이 파일의 패턴을 시간별로 검색하여 메일을 보내고 싶습니다.

이와 관련하여 저를 도와주세요. 나는 붙어있다.

답변1

d=`date +%m"/"%d"/"%y" "%H  -d "1 hour ago"|awk -F "/" 'OFS="/"{sub("0","",$1);sub("0","",$2);print }'`

awk -v d="$d" '$0 ~ d {print $0}' file

테스트를 거쳐 잘 작동함

관련 정보