我如何定义 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 仅在每月的第二天也是星期一时运行(交集)。手册页关于这个细节是不正确的。更多信息。