自己写的脚本,亲测有用。
传任意两个日期(yyyy-MM-dd)参数,按天跑
执行脚本命令示例:sh xx.sh 参数1(开始时间) 参数2(结束时间)
#!/bin/bash
start=$1
end=$2
starttime=`date +'%Y-%m-%d'`
#计算时间差
stime=`date -d "$start" +'%s'`
etime=`date -d "$end" +'%s'`
nowtime=`date -d "$starttime" +'%s'`
diff1=`expr $nowtime - $stime`
diff2=`expr $nowtime - $etime`
daydiff1=`expr $diff1 / 86400`
daydiff2=`expr $diff2 / 86400`
for((i=daydiff2;i<=$daydiff1;i++))
do
day=`date -d "$i days ago" +'%Y-%m-%d'`
echo "clean the data of "$day"................"
java的绝对路径 -cp xx.jar 相对路径 $day //执行该jar包需要一个参数(yyyy-MM-dd)
echo "finish repair the data of "$day"....................................."
done
endtime=`date +'%Y-%m-%d %H:%M:%S'`
start_seconds=$(date --date="$starttime" +%s);
end_seconds=$(date --date="$endtime" +%s);
echo "本次运行时间: "$((end_seconds-start_seconds))"s"
不传参,按天
执行脚本命令:sh xx.sh
示例1:从昨天一直回补到15天前日期的数据,根据需要可以合理改变for循环里i的取值范围。
#!/bin/bash
starttime=`date +'%Y-%m-%d %H:%M:%S'`
echo "current time is "$starttime
for((i=1;i<=15;i++))
do
day=`date -d "${i} day ago" +'%Y-%m-%d'`
java的绝对路径 -cp xx.jar 相对路径 $day //执行该jar包需要一个参数(yyyy-MM-dd)
echo "clean date of ${day}"
done
echo "finished "
endtime=`date +'%Y-%m-%d %H:%M:%S'`
start_seconds=$(date --date="$starttime" +%s);
end_seconds=$(date --date="$endtime" +%s);
echo "本次运行时间: "$((end_seconds-start_seconds))"s"
示例2:回溯前1-7、15天的数据
#!/bin/bash
starttime=`date +'%Y-%m-%d %H:%M:%S'`
echo "current time is "$starttime
#回溯1-7天
for((i=1;i<=7;i++))
do
day=`date -d "${i} day ago" +'%Y-%m-%d'`
echo "clean date of ${day}"
java的绝对路径 -cp xx.jar 相对路径 $day //执行该jar包需要一个参数(yyyy-MM-dd)
done
#回溯前第15天
day15=`date -d "15 day ago" +'%Y-%m-%d'`
echo "clean date of ${day15}"
java的绝对路径 -cp xx.jar 相对路径 ${day15}
echo "finished "
endtime=`date +'%Y-%m-%d %H:%M:%S'`
start_seconds=$(date --date="$starttime" +%s);
end_seconds=$(date --date="$endtime" +%s);
echo "本次运行时间: "$((end_seconds-start_seconds))"s"
不传参,按天按小时
执行脚本命令:sh xx.sh
示例里从当前日期一直回补到30天前日期的数据,根据需要可以合理改变for循环里i的取值范围。
#!/bin/bash
starttime=`date +'%Y-%m-%d %H:%M:%S'`
for((i=0;i<=30;i++))
do
start_time=`date -d "${i} day ago" +'%Y-%m-%d'`
for((j=0;j<=23;j++))
do
if [ ${j} -lt "10" ] //判断是否小于10
then
d=`date +"${start_time} 0${j}"` //小于10则补0
else
d=`date +"${start_time} ${j}"`
fi
echo "to clean date of ${d}:00:00 ~ ${d}:59:59"
java的绝对路径 -cp xx.jar 相对路径 "${d}:00:00" "${d}:59:59" //执行该jar包需要两个参数(yyyy-MM-dd HH:mm:ss)
done
echo "clean date of ${start_time}"
done
echo "finished "
endtime=`date +'%Y-%m-%d %H:%M:%S'`
start_seconds=$(date --date="$starttime" +%s);
end_seconds=$(date --date="$endtime" +%s);
echo "本次运行时间: "$((end_seconds-start_seconds))"s"