延迟/偏移crontab */x 调度一定的时间

延迟/偏移crontab */x 调度一定的时间

我每 4 天运行一个脚本

0 */96 * * * /path/to/script.sh

不过,我想弥补这一点,以便我可以每 4 天运行第二个脚本,但与第一个脚本间隔 2 天。因此最终结果将是

Script 1
wait 2 days
Script 2
wait 2 days
Script 1
wait 2 days
Script 2

有这种调度的语法吗?我想它会像

0 48+*/96 * * * /path/to/script2.sh

答案1

我相信 crontab 中没有办法跨越日期选择器和时间选择器。也没有任何方法可以干净地处理月/周/日模型。

最简单的方法就是超额安排任务,让他们检查是否“今天是这一天”。如果您无法更改任务,请将它们包装在适当的脚本中。在 crontab 命令行中处理日期检查是最后的手段。

您在 bash 中的检查将从纪元开始获取秒数,转换为天数,并进行模数检查。您需要一次性手动校准 4 天序列(0、1、2、3),具体取决于该系列的两个基准日期。

Paul--) cat day4
#! /bin/bash

Day=$(( $( date '+%s' ) / 86400 ))

(( Day % 4 == 0 )) || exit 0

printf 1>&2 'Starting task for day %d (%d)\n' "${Day}" "$(( Day % 4 ))"

Paul--) ./day4
Starting task for day 18416 (0)
Paul--) 

相关内容