我只有一个小时的时间学习cron工作如何工作,这就是我迄今为止所做的工作。我正在使用crontab -e
添加我的cron命令,即:
0/1 * * * * /usr/bin/python /home/my_username/hello.py > /home/my_username/log.txt
crontab -l
确认我的命令在那里。
Hello.py:
#!/usr/bin/python
# Hello world python program
print "Hello World!"
但我在日志文件中看不到任何内容。有人可以解释一下我做错了什么吗?
答案 0 :(得分:4)
实验表明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
中的任何一个都会导致作业仅在一小时内运行,即它仅相当于{{1 }}
这不是我对手册页中的描述所期望的。 Wikipedia quote中的jgritty's answer:
某些版本的cron可能不接受“/”之前的值 不是范围,例如“0”。另一种方法是取代零 用星号。
似乎并不完全正确,至少我正在使用的Vixie cron版本; 0
在没有投诉的情况下被接受,但这并不意味着我所期望的并且它似乎没有特别有用。
答案 1 :(得分:1)
0/1
似乎格式错误。
我在wikipedia上找到了这个:
某些版本的cron可能不接受&#34; /&#34;之前的值。如果不是范围, 例如&#34; 0&#34;。另一种方法是用星号替换零。
因此Keith Thompson的答案应该有效,所以应该这样做:
*/1 * * * *