我试图:
Ubuntu 14.02 LTS 上的 Vixie cron 拒绝第二种语法,尽管根据维基百科和官方规范它似乎有效:
“crontab”,The Open Group Base Specifications Issue 7 — IEEE Std 1003.1,2013 版,The Open Group,2013,检索于 2015 年 5 月 18 日
根据上面的参考,语法0 0 2-31 * *
将在一个月的每一天运行作业,因为第三个和第五个字段被视为运行条件的 OR 子句。
Mic*_*ton 13
您应该使用 a *
,而不是 a ?
(这是无效的)。
维基百科页面指出,这?
是一个仅由 nnCron 使用的非标准扩展,您没有使用。
在任何情况下,如果将星期几设置为*
并且指定了月份中的某一天,则忽略星期几。您参考的 IEEE 1003.1 规范实际上说明了这一点,解释了这些字段如何相互作用:
如果将月份或月份中的某一天指定为元素或列表,但星期几为 <星号>,则月份和月份中的日期字段应指定匹配的日期。如果月份和月份中的某天都指定为 <asterisk>,但星期几是元素或列表,则只有指定的星期几匹配。最后,如果将月份或月份中的某一天指定为元素或列表,并且将星期几也指定为元素或列表,则与月份和月份中的某一天或星期几匹配的任何一天,应匹配。
所以正确的格式正是合乎逻辑的:
0 0 1 * * echo First of the month
0 0 2-31 * * echo Not the first of the month
Run Code Online (Sandbox Code Playgroud)
您可以使用日期:
0 0 * * * [ $(date +\%d) -eq 1 ] && echo I will run on the 1st
0 0 * * * [ $(date +\%d) -ne 1 ] && echo I will run on all other days
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9468 次 |
最近记录: |