crontab 日期定义仅限每月的第二个星期三

crontab 日期定义仅限每月的第二个星期三

我如何定义 crontab 日期仅为每月第二个星期三?我将非常感激您的帮助。

答案1

Cron 可以不是本机执行此操作,但 systemd 计时器可以。

cron 语法0 0 8-14 * Wed不是工作。它将匹配每个星期三以及 8 日至 14 日之间的每一天。作为crontab 手册页

命令执行的日期可以通过两个字段指定——月份日期和星期几。如果两个字段都受到限制(即不以 * 开头),则命令将在以下情况下运行:任何一个字段与当前时间匹配。

systemd 计时器以不同的方式处理逻辑,可以执行您想要的操作。此语法将匹配每月第二个星期三的午夜。

OnCalendar=Wed *-*-8..14 00:00:00

链接

答案2

您要求使用 cron,因此仅使用 cron 您就可以使用 bash 的日期作为第二次测试来执行此操作:

0   0  8-14 *   *   [ "$(date '+\%u')" = "3" ] && {your script}
  • 第 8 天至第 14 天的每个小时
  • 然后使用 bash 的日期检查星期三。第 3 天是星期三

Soren A 的评论是有点不对劲(但手册页也是错误的)。0 0 8-14 * WED=“每月 8 日至 14 日的 00:00周三。”摘自最后一个链接:

提示 1:如果日期或星期几部分以 * 开头,则它们形成交集。否则,它们形成并集。 * * 3 * 1 在每月的第 3 天和星期一运行(并集),而 * * */2 * 1 仅在每月的第二天也是星期一时运行(交集)。手册页关于这个细节是不正确的。更多信息

相关内容