码迷,mamicode.com
首页 > 系统相关 > 详细

linux shell脚本调整任务计划

时间:2015-10-15 18:50:18      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:任务计划   调整   linux   shell脚本   

有2个脚本,每天跑任务计划的

dts_rsync.sh 负责下载线上备份的sql文件

dts_input.sh 负责将下载好的备份文件导入到本地Mysql


现在遇到一个问题,就是下载备份文件的完成时间不固定。以前是晚上6点下载完成,现在是7点才能完成,以后可能会增加。


下载日志如下:

2015-10-15 0:10:01 开始传输

2015-10-15 7:19:35 传输完成


任务计划如下:

#同步express的备份

10 0 * * * /opt/dts_rsync.sh &

#导入备份文件

01 7 * * * /opt/dts_input.sh &


那么需要的做的就是提取下载完成时间,然后将导入备份文件时间中的小时部分增加1小时。

由于shell无法直接编辑任务计划。

可以将任务计划内容写入到一个txt文件,然后使用命令将txt的内容覆盖至任务计划

命令如下:

/usr/bin/crontab /opt/cron.txt


完整的shell脚本cron如下:

#!/bin/bash


echo "#######################" >> /opt/cron.log

#记录执行时间

statime=`date +%Y-%m-%d" "%H:%M:%S`

echo "$statime"  >> /opt/cron.log

#任务计划开始时间,提取小时

a=`cat /opt/cron.txt | grep dts_input.sh | awk ‘{print $2}‘`

#传输完成时间,提取小时

b=`tail -1 /tmp/dts_message.log | awk ‘{print $2}‘ | cut -d ":" -f 1`


echo "任务计划开始时间$a" >> /opt/cron.log

echo "传输完成时间$b" >> /opt/cron.log


#判断传输完成时间是否大于等于任务计划时间

if [ $b -ge $a ];then

        #增加1个小时

        c=`/usr/bin/expr $a + 1`

        #修改任务计划文件

        /bin/sed -i "s/$a/$c/g" /opt/cron.txt

        #覆盖任务计划

        /usr/bin/crontab /opt/cron.txt

        echo "任务计划开始时间状态ERROR,变更小时为$c" >> /opt/cron.log

else

        echo "任务计划开始时间状态OK,小时是$a" >> /opt/cron.log

fi


cron.txt内容如下:

#同步express的备份

10 0 * * * /opt/dts_rsync.sh &

#导入备份文件

01 7 * * * /opt/dts_input.sh &


#检查下载时间

01 */1 * * * /opt/cron.sh

#每周日清空日志记录

01 23 * * 0 /opt/clean_log.sh



本文出自 “陨落星空” 博客,请务必保留此出处http://xiao987334176.blog.51cto.com/2202382/1703292

linux shell脚本调整任务计划

标签:任务计划   调整   linux   shell脚本   

原文地址:http://xiao987334176.blog.51cto.com/2202382/1703292

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!