|
|
@@ -1,228 +0,0 @@ |
|
|
#!/bin/sh |
|
|
|
|
|
|
|
|
################################### |
|
|
# |
|
|
#功能:取一年的某一月有多少天 |
|
|
#输入参数: |
|
|
# 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 |
|
|
} |
|
|
|
|
|
########## starting HERE ################### |
|
|
|
|
|
Today=`date +%Y%m%d` |
|
|
day_calculate ${Today} -15 |
|
|
NextDay=${ret_date} |
|
|
LastDay=$NextDay |
|
|
#BAK_GODU_HOME=/home/godu/GODU_CORE/bin |
|
|
BAK_GODU_HOME=/home/godu/GODU_LOGBAK |
|
|
GODU_HOME=/home/godu/GODU_CORE |
|
|
PATH=$PATH:/bin |
|
|
export PATH |
|
|
#check which day begin |
|
|
if [ -f $BAK_GODU_HOME/.bak_godulog_catch ]; then |
|
|
#file recorded last zip date found |
|
|
LastDay=`cat $BAK_GODU_HOME/.bak_godulog_catch` |
|
|
# echo "read date: "$LastDay |
|
|
else |
|
|
touch $BAK_GODU_HOME/.bak_godulog_catch |
|
|
LastDay=20000101 |
|
|
echo $NextDay > $BAK_GODU_HOME/.bak_godulog_catch |
|
|
fi |
|
|
|
|
|
for d in `ls $GODU_HOME/godulog|awk '{print $NF}'` |
|
|
do |
|
|
if [ $d -gt $LastDay ] ; then |
|
|
if [ $d -lt $NextDay ] ; then |
|
|
LastDay=$d |
|
|
echo $LastDay |
|
|
#go into date fileholder, list all ne |
|
|
for ne in `ls $GODU_HOME/godulog/$d|grep -v tar|awk '{print $NF}'` |
|
|
do |
|
|
dd=$GODU_HOME/godulog/$d |
|
|
#echo $dd |
|
|
tar -cPf $dd/$ne.tar $dd/$ne |
|
|
gzip $dd/$ne.tar |
|
|
rm -r $dd/$ne |
|
|
done |
|
|
fi |
|
|
fi |
|
|
done |
|
|
|
|
|
echo $LastDay > $BAK_GODU_HOME/.bak_godulog_catch |
|
|
|
|
|
|
|
|
|