程序需求
监控OGG的日志文件,当日志文件日期跨度大于30天时,生成告警信息。
开发方案
- 通过ls命令,按时间顺序排序显示,取第一条,就是最早的日志文件;取最后一条,就是最近的日志文件;
- 2个文件的时间计算差值,大于阈值告警;
- 获取其他需要的信息:日志文件个数、日志目录的占用空间。
程序
1 #!/bin/sh
2
3 #
4 #
5
6 GGATE=/home/oracle/ggate
7 GGATE_DAT=$GGATE/dirdat
8 ALLOW_OLDEST_FILE=30
9
10 date_begin=`ls --time-style='+%Y%m%d' -ltr $GGATE_DAT/b*|head -n1|awk '{print $6}'`
11 date_end=`ls --time-style='+%Y%m%d' -ltr $GGATE_DAT/b*|tail -n1|awk '{print $6}'`
12 echo "Date period of trail : "$date_begin" ~ "$date_end
13
14 diffdays=$((($(date +%s -d "$date_end" ) - $(date +%s -d "$date_begin"))/86400))
15 echo "diffdays : "$diffdays" days "
16
17 if [ $diffdays -gt $ALLOW_OLDEST_FILE ] ;then
18 filenum=`ls -l $GGATE_DAT/b*|wc -l`
19 dirSize=`du -h $GGATE_DAT`
20 echo "warning:Please delete expired trail log.there is $filenum trails,the oldest trail is $diffdays days ago, and used $dirSize"|tee /tmp/checko
gg.log
21 fi
命令总结
- ls可以设置选项 --time-style=’+%Y%m%d’,与find的–max-depth=1类似。
- ls 可以按指定顺序排序,按修改时间 -t;倒序 -r;按大小 -S。
- 日期差值计算:通过设置格式,把日志换算成秒;计算秒的差值,再换成回天数;
- 数值比较在 [ $1 -gt $2 ] 里。
- 同时输出到屏幕和日志文件:tee。