我安排了这样的工作:
* * 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 正在运行。