crontab一天中的一周不工作-它每天发送一次

时间:2019-07-22 01:31:29

标签: cron

我使用crontab在每个第一个,第三个星期一发送电子邮件。

我同时尝试了MON1,但是每天都可以正常工作。

这是我的crontab-我都尝试过,但都每天发送一次

0 09 1-7,15-21 * MON
0 09 1-7,15-21 * 1

我认为语法没有问题。我能做什么? 预先感谢。

3 个答案:

答案 0 :(得分:1)

从我读到的here来看,范围无法在午夜左右变化。您可以尝试为每个可能的星期一创建单独的CRON作业,例如

0 09 1 * MON
0 09 2 * MON
...
0 09 7 * MON
0 09 15 * MON
0 09 16 * MON
...
0 09 21 * MON

答案 1 :(得分:1)

这是正确的,已记录的行为。从Ubuntu 16.04(重点是我)上的man 5 crontab

  

注意:命令的执行日期可以由两个字段指定-月份的日期和日期   一周。 如果两个字段都受限制(即不是*),则当其中一个   字段与当前时间匹配。例如,   30 4 1,15 * 5将导致一个命令在每个1号和15号的凌晨4:30运行    一个月,每个星期五。不过,您可以通过在   命令(请参见下面的Example CRON FILE中的最后一个示例)。

稍后在手册页中,他们给出了一个示例,该示例可以完成您想要的事情:

   # Run on every second Saturday of the month
   0 4 8-14 * *    test $(date +\%u) -eq 6 && echo "2nd Saturday"

答案 2 :(得分:0)

我在man 5 crontab

中找到了它
  

注意:命令的执行日期可以由两个字段指定-月份的日期和星期几。如果两个字段都受限制(即不是*),则当任何一个字段与当前时间匹配时,将运行该命令。例如,``30 4 1,15 * 5''将导致一个命令在每个月的1号和15号的凌晨4:30以及每个星期五运行。但是,可以通过在命令中添加测试来获得所需的结果(请参见下面的Example CRON FILE中的最后一个示例)。

因此,这意味着同时应用了一天(1-7,15-21)和一天中的一周(MON)。

要同时指定星期几和星期几时,请尝试使用date

0 09 1-7,15-21 * $(date +\%Wu) -eq 1 && my_job
相关问题