2017-01-16 273 views
1

我想要一个作业a执行每个15 mins10:30 AM8:30 PM。我试过30/15 10-20 * * *。但是,它忽略了时间11:00 AM11:15 AM12:00 PM12:15 PM1:00 PM1:15 PMCron模式与开始和结束时间分钟

我想知道上述表达式正确的cron字符串。

回答

2
# Run command every fifteen minutes between 10:30 and 20:30. 
0,15,30,45 11-19 * * * …command… 
30,45  10 * * * …command… 
0,15,30 20 * * * …command… 

第一行处理从11:00到19:45的整个小时。第二行处理10:30和10:45。第三行处理20:00,20:15,20:30(假设你也希望它在20:30运行 - 如果你不明白这个问题的话)。

它可能不美观,但它会完成工作。只要确保…command…序列足够简单,重复就很明显。

您可以在您的cron中用0/15替换第一行的第一个组件。你可能会使用30/15作为第二个,但它看起来没有比写的更清晰。我不确定有什么好的方法来取代其他线路。其他

一种可能性是,使指定每个刻钟的时间范围是重构它:

0 11-20 * * * …command… 
15 11-20 * * * …command… 
30 10-20 * * * …command… 
45 10-19 * * * …command… 

你可以任意结合前两个那些。

+0

嗯。所以我将不得不编写多个cron模式。不可能从单一的.. ?? – Pattu

+0

我不知道有什么方法,但我没有详细研究现代的'crontab'格式。我写的第七版Unix(1979)'cron'也可以工作(当时没有单独的'crontab'命令!)。对我而言,它不会引起痛苦;我会在'crontab'条目中指定一个简单的shell脚本(例如'/ root/cron/specific-task.sh'),该脚本将包含任何复杂性。在我的书中,“crontab”文件或条目中的内容应该尽可能简单,但并不简单。如果你需要指定shell,那就这样吧:'sh/root/cron/specific-task.sh'。 –

相关问题