第三个 cron 字段似乎不起作用(作业在我不希望它运行时运行)

第三个 cron 字段似乎不起作用(作业在我不希望它运行时运行)

我安排了这样的工作:

*   *    6-8  *  1-5  echo "test" >>/tmp/test.log 2>&1

我预计这项工作只在 6、7、8 这 3 天运行。但今天18号了,它仍然运行。这份工作有什么问题吗?如果我想让它运行特定的几天,我该怎么办?

答案1

月份中的某一天和星期几的位置是 OR 运算,因此在您的示例中,cron 将在 6 号、7 号或 8 号运行或者从星期一到星期五。由于 18 日是星期一,因此运行。这并不完全直观。

为了获得我认为您想要的行为(如果是工作日,则在 6 日、7 日和 8 日运行),那么您可以执行以下操作:

* * * * 1-5 date '+%d' | grep '[678]' && echo "test" >>/tmp/test.log 2>&1

答案2

月份日期规范(field-3;one-relative)和月份日期字段 (5) 均已指定。在这种情况下,任一匹配都意味着您的 crontab 正在运行。

相关内容