crontab一周不工作-每天发送

crontab一周不工作-每天发送,cron,Cron,我使用crontab在每个第一、第三个星期一发送电子邮件 我尝试了MON和1两种方法,但每天都有效 这是我的crontab-我两个都试过了,但都每天发送 0 09 1-7,15-21 * MON 0 09 1-7,15-21 * 1 我认为语法没有问题。我能做什么? 提前谢谢。据我所知,范围不能在午夜左右。您可以尝试为每个可能的周一创建单独的CRON作业,例如 0 09 1 * MON 0 09 2 * MON ... 0 09 7 * MON 0 09 15 * MON 0 09 16 *

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

我尝试了
MON
1
两种方法,但每天都有效

这是我的crontab-我两个都试过了,但都每天发送

0 09 1-7,15-21 * MON
0 09 1-7,15-21 * 1
我认为语法没有问题。我能做什么? 提前谢谢。

据我所知,范围不能在午夜左右。您可以尝试为每个可能的周一创建单独的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

我在
man5crontab

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

因此,这意味着当天(1-7,15-21)和当天的一周(周一)都适用

如果要同时指定一天中的日期和星期,请尝试使用
date

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

这是正确的、记录在案的行为。从Ubuntu 16.04(emphasis mine)上的
man 5 crontab

注意:命令的执行日期可以由两个字段指定-月日和日 一周之内如果两个字段都受到限制(即不*),则当其中一个字段 字段与当前时间匹配。例如,
30 4 1,15*5
将导致在每个月1日和15日的凌晨4:30运行命令 每月,加上每周五。但是,可以通过在测试中添加测试来实现所需的结果 命令(请参阅下面示例CRON文件中的最后一个示例)

在手册页的后面部分,他们给出了一个示例,可以实现您想要的功能:

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

这个CRON表达式使用什么工具?格式/规则不尽相同。@TimBiegeleisen哦,我在ubuntu 16.04中使用crontab。有什么版本的不同吗?我在白天使用范围-范围不能在午夜前后结束有关系吗?我不知道…如果我的答案有效,那么显然是的。如果没有,我很乐意删除这个。也可能是它不喜欢多个范围。哦,你的意思是它同时应用了多个范围。。。天+一天中的一周。我会想出更多的办法。谢谢,答案几乎是一样的。非常感谢。顺便说一句,在您的示例crontab中,
test
的作用是什么?
mantest
。它是实际执行相等性测试的命令(因为被赋予了
-eq
选项)。您的示例没有使用单词
test
,将不起作用。