Linux shell脚本调整任务计划

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

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

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

现在遇到一个,就是下载备份文件的完成不固定。以前是晚上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

转载自:https://www.linuxidc.com/Linux/2015-10/124180.htm

声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 智乐兔
转载请注明:转自《Linux shell脚本调整任务计划
本文地址:https://www.zhiletu.com/archives-5101.html
关注公众号:智乐兔

赞赏

wechat pay微信赞赏alipay pay支付宝赞赏

上一篇
下一篇

相关文章

在线留言

你必须 登录后 才能留言!