首页 / 操作系统 / Linux / 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/bashecho "#######################" >> /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.logecho "传输完成时间$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.txtecho "任务计划开始时间状态ERROR,变更小时为$c" >> /opt/cron.logelseecho "任务计划开始时间状态OK,小时是$a" >> /opt/cron.logficron.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本文永久更新链接地址