每月第一周和第三周最后两天的 Cron 时间表

每月第一周和第三周最后两天的 Cron 时间表

我可以获得编写 cron 计划的帮助吗?该计划应该在以下时间运行命令:

  • 每月第一周的最后 2 天
  • 每月第三周的最后 2 天

答案1

ISO 8601将一年的第一周定义为包含 1 月 4 日的那一周或其中包含 >= 新年四天的那一周(它还定义了周从星期一开始,因此两个定义是相同的)。它没有“一个月的第一周”的具体定义,put 建议应用相同的“该月有 >= 四天”规则。

这并不能直接帮助你,因为 Cron 不知道这一点,也没有“一个月的第一周”或“一个月的第三周”的概念。您可以做的是让脚本在最后两天运行每个一周与

0 1 * * 6,7 /path/to/my/script

然后进行一些基于日期的计算(取决于您对“一个月的第一周”的定义)以确定脚本是否应立即终止或实际运行。

使用上面的 ">= 一个月中的四天”规则,您可以在 /bin/sh 中使用类似以下内容

d=$(date +%d)
if [ "$d" -ge 3 ] && [ "$d" -le 10 ]; then
    # 1st week
elif [ "$d" -ge 17 ] && [ "$d" -le 24 ]; then
    # 3rd week
else
    exit
fi

相关内容