实验表明,这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
接受了,但这并不意味着我所期望的,而且它似乎并不是特别有用。