实验表明,这0/1似乎是问题所在。
0/1 应该等同于*。如果您替换0/1为*,它应该可以工作。
这是我的实验性 crontab:
0/1 * * * * echo 0/1 >> cron0.log
* * * * * echo star >> cron1.log
这会创建cron1.log但不会cron0.log。
我将对此进行调查并尝试找出为什么0/1不起作用,但现在只需使用*它就可以了。
更新:
该foo/bar语法特定于 Vixie cron 实现,大多数 Linux 系统和 MacOS X 都使用该语法,但并不通用。
每分钟运行命令的常用方法是仅*在第一个字段中指定。要每 5 分钟运行一次命令,如果您的 cron 支持,请指定*/5.
这是crontab(5)手册页的内容:
步长值可以与范围结合使用。跟随一个范围,/<number>指定跳过该范围内的数字值。例如,0-23/2可以在小时字段中使用以指定每隔一小时执行一次命令(V7 标准中的替代方案是0,2,4,6,8,10,12,14,16,18,20,22)。星号后也允许执行步骤,因此如果您想说“每两个小时”,只需使用*/2.
我什至不确定是什么0/1意思。
更新 2:
好的,这就是我发现的。
鉴于字段 2 到 5 都是*,将第一个字段(指定分钟)设置为*会导致作业每分钟运行一次。 */2每 2 分钟*/3运行一次,每 3 分钟运行一次。这一切都在预料之中。
将第一个字段设置为 、 或 中的任何一个0/1会0/2导致0/3作业仅在整点运行,即,它等同于0。
这不是我从手册页中的描述所期望的。jgritty 回答中的维基百科引用:
某些版本的 cron 可能不接受“/”前面的值,如果它不是一个范围,例如“0”。另一种方法是用星号替换零。
似乎并不完全正确,至少对于我正在使用的 Vixie cron 版本而言;毫无怨言地0/1接受了,但这并不意味着我所期望的,而且它似乎并不是特别有用。