文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>检查日志的小脚本

检查日志的小脚本

时间:2008-08-13  来源:tchmuzi

#!/bin/ksh
echo "Please input begdate[for example:20080201]:\c"
read begdate
echo "Please input enddate[for example:20080210]:\c"
read enddate
###################################
#
#功能:取一年的某一月有多少天
#输入参数:
#     1. yy年份
#     2. mm月份
#输出:
#     一个月的天数
#     -1 不成功
###################################
get_days()
{
    yy_tmp=$1
    mm_tmp=`expr $2 + 0`
    if [ $? -ge 2 ]; then
       return -1
    fi
    case $mm_tmp in
         1|3|5|7|8|10|12) ret_days=31
                          ;;
         4|6|9|11)        ret_days=30
                          ;;
         2)               ret_days=28
                          ;;
    esac
    if [ $mm_tmp -eq 2 ]; then
        yy_tmp1=`expr $yy_tmp / 4 \* 4`
        if [ $? -ge 2 ]; then
           return -1
        fi
        yy_tmp2=`expr $yy_tmp / 100 \* 100`
        if [ $? -ge 2 ]; then
           return -1
        fi
        yy_tmp3=`expr $yy_tmp / 400 \* 400`
        if [ $? -ge 2 ]; then
           return -1
        fi
        if [ $yy_tmp1 -eq $yy_tmp ]; then
           if [ $yy_tmp2 -eq $yy_tmp ]; then
              if [ $yy_tmp3 -eq $yy_tmp ]; then
                 ret_days=29
              fi
           else
              ret_days=29
           fi
        fi
     fi
     return $ret_days
}

###############################################
#
#功能:计算一个日期加或减一个天数后得到的新日期
#输入参数:
#   1.日期
#   2.要变化的天数
#输出:
#   变化后的日期
#   -1 失败
#   0 :表示增量为零
################################################
day_calculate()
{
    date1=$1
    datemodi=$2
    #若日期增量为0,则返回输入日期
    if [ $datemodi -eq 0 ]; then
      ret_date=$date1
      return 0
    fi
    yy=`echo $date1 | cut -b 1-4`
    if [ $? -ne 0 ]; then
       return -1
    fi
    mm=`echo $date1 | cut -b 5-6`
    if [ $? -ne 0 ]; then
       return -1
    fi
    dd=`echo $date1 | cut -b 7-8`
    if [ $? -ne 0 ]; then
       return -1
    fi

    dd1=`expr $dd + $datemodi`
    if [ $? -ge 2 ] ; then
       return -1
    fi
    #小于零和大于零的处理
    if [ $datemodi -lt 0 ] ; then
       while [ 0 -eq 0 ]
       do
          if [ $dd1 -ge 1 ] ; then
             break
          fi
          mm=`expr $mm - 1`
          if [ $? -ge 2 ] ; then
             return -1
          fi
          if [ $mm -le 0 ] ; then
             mm=`expr $mm + 12`
             if [ $? -ge 2 ]; then
                return -1
             fi
             yy=`expr $yy - 1`
             if [ $? -ge 2 ] ; then
                return -1
             fi
          fi
          get_days $yy $mm
          daysofthismon=$?
          if [ $daysofthismon -lt 0 ] ; then
             return -1
          fi
          dd1=`expr $dd1 + $daysofthismon`
          if [ $? -ge 2 ] ; then
             return -1
          fi
       done
    else
       while [ 0 -eq 0 ]
       do
          get_days $yy $mm
          daysofthismon=$?
          if [ $daysofthismon -lt 0 ] ; then
             return -1
          fi
          if [ $dd1 -le $daysofthismon ] ; then
             break
          fi
          dd1=`expr $dd1 - $daysofthismon`
          if [ $? -ge 2 ] ; then
             return -1
          fi
          mm=`expr $mm + 1`
          if [ $mm -gt 12 ] ; then
             mm=`expr $mm - 12`
             yy=`expr $yy + 1`
          fi
       done
    fi
    mm=`expr $mm + 0`
    if [ $? -ge 2 ] ; then
       return -1
    fi
    dd1=`expr $dd1 + 0`
    if [ $? -ge 2 ] ; then
       return -1
    fi
    if [ $mm -le 9 ] ; then
       ret_date=${yy}0${mm}
    else
       ret_date=${yy}${mm}
    fi
    if [ $dd1 -le 9 ] ; then
       ret_date=${ret_date}0${dd1}
    else
       ret_date=${ret_date}${dd1}
    fi
}
PN=`ps -ef|grep ckmml.sh |grep -v grep |wc -l`
#echo ${PN}
#如果没有重复实例,正常执行
if [ $PN -eq 1 ];then
   echo "Begin to check ..."
   #如果已经有个实例在运行,退出本实例
   else
      echo "+=====================+"
      echo "The Script is running !"
      echo "+========exit=========+"
   exit 1;
fi
if [ -f "riqi_t.unl" ];then
   rm -rf riqi_t.unl
fi
touch riqi_t.unl
if [ -f "riqi.unl" ];then
   rm -rf riqi.unl
fi
touch riqi.unl
if [ -f "tmpdir.unl" ];then
   rm -rf tmpdir.unl
fi
touch tmpdir.unl
echo ${enddate}>>riqi_t.unl
while  [ ! ${enddate} -eq ${begdate} ]; do
#echo ${enddate}
day_calculate ${enddate} -1
enddate=$ret_date
echo ${enddate}>>riqi_t.unl
done
cat riqi_t.unl | sort >> riqi.unl
rm -rf riqi_t.unl
rq=$HOME/riqi.unl
while read riqi other
do
ls -l /tellin/smpmml/sms_run/log/oplog|grep ^d |grep ${riqi}|awk -F " " '{print $9}'>>tmpdir.unl
done < ${rq}
echo "+-----------The result file --> ./${1}.log------------+"
workdir=$HOME/tmpdir.unl
while read sdir other
do
cd ~smpmml/sms_run/log/oplog/${sdir}
#echo "+----------------------\toplog/${sdir}\t----------------------+" |tee -a $HOME/${1}.log
#printf "+----------------------\toplog/${sdir}\t----------------------+\n" |tee -a $HOME/${1}.log
echo "+----------------------oplog/\c"
printf "%-10s" ${sdir}
echo "----------------------+"
gunzip -c *log.gz |grep ${1} |tee -a $HOME/${1}.log
done < ${workdir}
echo "+----------------------------Over----------------------------+"
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载