【问题标题】:Cron pattern with start and end time with minute带有开始和结束时间的 Cron 模式
【发布时间】:2017-01-16 06:44:09
【问题描述】:

我希望从10:30 AM8:30 PM 的每个15 mins 执行一个作业。

我试过30/15 10-20 * * *。但它忽略了时间11:00 AM11:15 AM12:00 PM12:15 PM1:00 PM1:15 PM 等。

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

【问题讨论】:

    标签: unix cron crontab


    【解决方案1】:
    # 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…
    

    您可以选择组合其中的前两个。

    【讨论】:

    • 嗯。所以我将不得不编写多个 cron 模式。不可能从一个..??
    • 我不知道有什么办法,但我没有详细研究过现代crontab 格式。我写的内容也适用于第 7 版 Unix(1979)cron(当时没有单独的crontab 命令!)。对我来说,它不会引起痛苦;我会在crontab 条目中指定一个简单的shell 脚本(例如/root/cron/specific-task.sh),该脚本将包含任何复杂性。在我的书中,crontab 文件或条目中的内容应该尽可能简单,但不能更简单。如果需要指定 shell,就这样吧:sh /root/cron/specific-task.sh.
    猜你喜欢
    • 2016-10-16
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多