今天是2016年11月1日或(明确的)数字,2016-11-01。
我有一个用户cron作业像这样设置:
# mh dom mon dow command 33 3 1 */2 * /home/user/...
它应该在每个月的第一个月份在上午3点33分运行,不pipe是星期几,但是由于某种原因,它是在今天运行的,尽pipe11不能被2整除。
有人能解释我吗? 我是否错误地认定了2的可分性?
编辑:我忘了提及,我在Debian 8.6“Jessie”机器上运行cron
版本“3.0pl1-127 + deb8u1”。
/
不是一个算术expression式,而是在允许的值范围内描述“步进值”。 所以,由于月份总是从1
开始,而不是从0
,因此/2
将意味着“取其他值”,导致(1,3,5,7,9,11)。
这也在手册页中描述,虽然这不是很清楚和容易理解:
步长值可以与范围结合使用。 在“<number>”范围之后,指定在该范围内跳过数字的值。 例如,可以在小时字段中使用“0-23 / 2”来每隔一小时指定命令的执行(V7标准中的替代选项是“0,2,4,6,8,10,12,14,16 ,18,20,22" )。 星号后也允许步骤,所以如果你想说“每两个小时”,只需使用“* / 2”即可。
今天是十一月的第一天。
* / 2意味着你的cronjob会按照你所说的每隔一个月执行一次。
所以下个月(十二月),cronjob将不会被执行,但会在一个月之后(一月)执行。
本月(10月)前一个月,cronjob没有被执行。 但在九月份是这样。