shell实例:监控日志文件日期跨度

程序需求

监控OGG的日志文件,当日志文件日期跨度大于30天时,生成告警信息。

开发方案

  1. 通过ls命令,按时间顺序排序显示,取第一条,就是最早的日志文件;取最后一条,就是最近的日志文件;
  2. 2个文件的时间计算差值,大于阈值告警;
  3. 获取其他需要的信息:日志文件个数、日志目录的占用空间。

程序

  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

命令总结

  1. ls可以设置选项 --time-style=’+%Y%m%d’,与find的–max-depth=1类似。
  2. ls 可以按指定顺序排序,按修改时间 -t;倒序 -r;按大小 -S。
  3. 日期差值计算:通过设置格式,把日志换算成秒;计算秒的差值,再换成回天数;
  4. 数值比较在 [ $1 -gt $2 ] 里。
  5. 同时输出到屏幕和日志文件:tee。

猜你喜欢

转载自blog.csdn.net/heroicpoem/article/details/108608385
今日推荐