내 bash 버전은 GNU bash, 버전 4.1.2(1)-release (x86_64-redhat-linux-gnu)입니다.
지난 한 시간 동안 로그 파일에 추가되었을 수 있는 패턴을 검색하려고 합니다. 포럼에서 제안된 다른 솔루션을 살펴봤지만 제게는 효과가 없었습니다. 도와주세요.
이것이 내가 시도한 것이지만 나에게는 효과가 없습니다.
- grep "^$(date -d '-1 hour' +'%H')" /space/log/server.log grep '오류'
- 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
테스트를 거쳐 잘 작동함