user587469 Asked: 2021-09-01 06:43:15 +0800 CST2021-09-01 06:43:15 +0800 CST 2021-09-01 06:43:15 +0800 CST 仅每月第二个星期三的 crontab 日期定义 772 如何仅定义第二个星期三(每个月)的 crontab 日期?我会很感激你的帮助。 cron 2 个回答 Voted Andrew Lowther 2021-09-01T08:21:57+08:002021-09-01T08:21:57+08:00 Cron 本身无法做到这一点,但 systemd 计时器可以。 cron 语法0 0 8-14 * Wed将不起作用。它将在每周三以及 8 日和 14 日之间的每一天进行比赛。正如crontab 手册页所说 命令执行的日期可以由两个字段指定 - 月中的日和周中的日。如果两个字段都受限制(即,不以 * 开头),则当任一字段与当前时间匹配时,将运行该命令。 systemd 计时器以不同的方式处理逻辑,可以做你想做的事。此语法将匹配每月第二个星期三的午夜。 OnCalendar=Wed *-*-8..14 00:00:00 链接 https://www.bggofurther.com/2018/02/execute-cron-on-a-specific-day-of-the-month-eg-second-monday/ https://www.redpill-linpro.com/sysadvent/2016/12/07/systemd-timers.html Best Answer Rinzwind 2021-09-01T08:42:24+08:002021-09-01T08:42:24+08:00 你要求 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 在每月的第二天运行,前提是它也是星期一(交叉点)。手册页对此详细信息不正确。更多信息。
Cron 本身无法做到这一点,但 systemd 计时器可以。
cron 语法
0 0 8-14 * Wed
将不起作用。它将在每周三以及 8 日和 14 日之间的每一天进行比赛。正如crontab 手册页所说systemd 计时器以不同的方式处理逻辑,可以做你想做的事。此语法将匹配每月第二个星期三的午夜。
链接
你要求 cron 所以只有使用 cron 你可以使用 bash 的日期作为第二次测试来做到这一点:
Soren A 的评论有点错误(但手册页也是错误的)。
0 0 8-14 * WED
= “每月 8 点到 14点和星期三的每一天的 00:00。” 从最后一个链接: