每次运行时调整Cronjob?

时间:2016-05-27 00:47:34

标签: linux bash cron crontab

我正在尝试为我编写的Jira计划一个两阶段备份过程。

首先必须触发Jira备份,然后创建并可供下载20-30分钟。

只能从备份完成时开始每48小时触发一次备份&可用,似乎需要20-30分钟才能触发。

其次,可以在创建备份后24小时内下载jira备份。

我的问题是,如果我为触发器安排了一个cron,然后在一小时后安排下载,例如。

0 4 */2 * * /bin/bash jira.sh triggerbackup
0 5 */2 * * /bin/bash jira.sh downloadbackup 

第一次备份没问题,但是下次它会出错,因为crontab会在48小时限制之后执行20-30分钟。

两个cron任务都需要“滑动”让我们说一个小时是安全的,以便每次脚本运行时都在48小时窗口之外。

第一次

0 4 */2 * * /bin/bash jira.sh triggerbackup
0 5 */2 * * /bin/bash jira.sh downloadbackup 

第二次

0 5 */2 * * /bin/bash jira.sh triggerbackup
0 6 */2 * * /bin/bash jira.sh downloadbackup 

第三次

0 6 */2 * * /bin/bash jira.sh triggerbackup
0 7 */2 * * /bin/bash jira.sh downloadbackup 

就个人而言,我只是推迟了频率,但我没有制定规则。我想可能有一个简单的解决方案,我无法看到atm,但无论如何,这是一个我从未遇到的有趣问题..任何想法如何通过cron实现这一点?

1 个答案:

答案 0 :(得分:4)

而不是cron使用at。在备份脚本结束时,将在49小时后安排下一次备份,并安排下载脚本。

at now + 49 hours <<EOF
/bin/bash jira.sh triggerbackup
EOF
at now + 1 hours <<EOF
/bin/bash jira.sh downloadbackup
EOF