我已将cronjob配置为在每月的8月40日的每个第一个星期一运行,如下所示:
40 08 1-7 * 1 /fs/test/testtime.sh
但是它不仅在星期一运行,而且还在今天的星期二运行。
有什么我想念的吗?
答案 0 :(得分:2)
从crontab的手册页中(我的重点):
注意:命令的执行日期可以由两个字段指定-月份的日期和星期几。如果 两者 字段均受限制(即不是
*
),则当 两者 < / strong>字段匹配当前时间。例如,
30 4 1,15 * 5
将导致命令在每月的1号和15号的凌晨4:30运行,每个星期五 plus 。
因此,在您的情况下,该工作在每个月的前七个天中的每个工作天运行,每个星期一 plus 。
您可以通过在命令中添加AND
条件来执行所需操作,而不是依赖时间规范中的OR
条件,例如:
40 08 1-7 * * test $(date +\%u) -eq 1 && /fs/test/testtime.sh
这将在那几天(每月前七个天)在所有上运行实际的cron作业,但是 payload (脚本)仅在以下日期运行:星期一。