crontab小时范围a-b会在b之后运行吗?

时间:2013-05-03 05:46:48

标签: crontab

假设我有一个每20分钟运行一次的crontab,我有一个小时范围可能会有所不同,所以我们说a-b,在一个例子中可能看起来像

*/20 5-23 * * * /usr/bin/cool_program

我的问题是,cron会在23:00,23:20,23:40和00:00运行吗?

3 个答案:

答案 0 :(得分:11)

GK27's answer没有完全回答这个问题,所以让我澄清一下:

当时间与提供的表达式匹配时,

cron将运行作业。您的表达式告诉它在分钟可被20整除时运行(*/20),并且当小时在包含的小时(5-23)内时,您的小时范围会告诉它运行。其余三个*告诉它匹配任何日,月和年。

因此,第一个作业将在05:00运行,因为小时05在5到23的范围内,分钟00可以被20整除。最后一个作业将运行在23:40,因为小时23在5到23的范围内,分钟40可以被20整除。它不会在00:00运行,因为小时,{{ 1}},不在5到23的范围内。

答案 1 :(得分:5)

是的,它当然会在凌晨5点到23点每隔2分钟执行一次,

* 20 – 20th Minute (Top of the hour)
* 5-23 – 5.20 am,5.40 am,6 am,....23 pm
* * – Every day
* * – Every month
* * - EvryDay of the Week

Documentation for Reference

答案 2 :(得分:5)

其他答案是正确的,但是我花了一段时间才找到来源。

答案位于DebianMac OS XFreeBSD(以及其他Posix系统)info crontab(或*/5 0-8,17-23 * * * outside-hours.sh */5 9-16 * * * business-hours.sh )上:

  

允许使用数字范围。范围是两个用数字分隔的数字   一个连字符。指定的范围包括在内。例如,8-11为   “小时”条目指定在8,9,10和11小时执行。

对于我的应用程序,我希望脚本在工作时间(上午9点到下午5点)每5分钟运行一次,而另一个脚本每隔5分钟运行一次。不幸的是,范围无法在午夜进行,因此您需要指定3个范围(早上,营业时间,晚上)

outside-hours.sh  first at 00:00 and finally at 08:55
business-hours.sh first at 09:00 and finally at 16:55
outside-hours.sh  first at 17:00 and finally at 23:55

这应该运行

{{1}}