SED 지정 시간 대 로그 캡 처

수요: tomcat 의 로 그 를 30 분 에 한 번 씩 분석 합 니 다. 지정 한 필드 가 나타 나 면 경고 합 니 다. 여기 있 는 모든 로 그 는 한 파일 에 입력 되 어 있 기 때문에 저 는 sed 로 지정 한 시간 대의 로 그 를 캡 처 한 다음 에 다른 파일 로 출력 한 다음 에 이 파일 의 내용 을 분석 하면 됩 니 다.
실행 과정 에서 sed 로 날 짜 를 캡 처 할 수 있 는 것 을 발 견 했 습 니 다. 그러나 캡 처 할 때 분 초 는 정규 표현 식 을 사용 해 야 합 니 다. 다음은 제 스 크 립 트 입 니 다. 참고 하 시기 바 랍 니 다.
#!/bin/bash
base_path="/data/sercices"
tmpfile="/tmp/test.log"

#       30       
currenttime=$(date "+%F %H:%M")         #  :2018-08-29 16:42:05
lasttime=$(date "+%F %H"  -d "30 minute ago")

#            ,      30   
MI=`echo $currenttime | awk -F':' '{print $2}'`
if [ $MI -ge 30 ]
then
    start_time=$(date "+%F %H"):[0][0-9]
    end_time=$(date "+%F %H"):[3][0-9]
else 
    start_time=$(date "+%F %H"  -d "30 minute ago"):[3][0-9]
    end_time=$(date "+%F %H"):[0][0-9]
fi

#echo ${start_time}
#echo ${end_time}

#            
cd ${base_path}
sed -n "/${start_time}/,/${end_time}/p" nohup.out > $tmpfile

#           
num=$(egrep 'CommunicationsException|NullPointerException' $tmpfile | wc -l )
echo $num

좋은 웹페이지 즐겨찾기