一、需求说明
- 系统有报错文件error.log,现在需要每十分钟查看一次报错文件的内容,如果新增的报错中出现 ‘ERROR’关键字,需要提醒管理员
二、脚本代码
#! /bin/sh
# 获取十分钟前的时间戳
enddate=$(date -d "10 minute ago" +%s)
# 这里分二步
# 1. awk命令:获取error.log日志文件中包含 ERROR 关键字的行,行里面读取第一列和第二列(时间和分钟)
# 2. cat命令:按行读取文件中最新的100行数据
awk '/ERROR/ {print $1,$2}' log_error.log | cat | tail -n 100 | while read line
do
# 截去右边.开始之后的右边所有数据,此步已省略
info=${line%.*}
# 将info转化为时间戳
infodate=`date -d "$line" +%s`
# 时间戳对比,如果日志的时间戳大于或等于十分钟前的时间戳,那么通知管理员
if [ "$infodate" -ge "$enddate" ]; then
# 干你想干的
# 通知脚本没有写
echo $line
fi
done