A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

需求:对tomcat的日志每半个小时分析一次,如果出现指定字段就报警
由于这边所有的日志都是输入到一个文件中,所以我第一时间想到的是用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
---------------------
作者:幸福丶如此
来源:CSDN
原文:https://blog.csdn.net/m0_3788642 ... 066?utm_source=copy
版权声明:本文为博主原创文章,转载请附上博文链接!

1 个回复

倒序浏览
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马