【问题标题】:How can I run sub-minute cron jobs?如何运行亚分钟 cron 作业?
【发布时间】:2018-07-23 07:06:31
【问题描述】:

我想在每个星期三的 10:31:10 运行一个 cron 作业,但我刚刚得知 crontab 不能运行亚分钟作业,所以我能得到的最接近的时间是上午 10:31,使用以下代码:

31 10 * * WED /file/to/run.py

是否有可能解决这个问题,或者是否有其他替代 cron 的方法可以完成这项工作?

【问题讨论】:

    标签: cron


    【解决方案1】:

    最简单的解决方法是休眠 10 秒:

    # .----------------- minute (0 - 59)
    # |   .------------- hour (0 - 23)
    # |   |  .---------- day of month (1 - 31)
    # |   |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
    # |   |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7)
    # |   |  |  |  |
    # *   *  *  *  *     command to be executed 
      31 10  *  *  3     sleep 10 && /file/to/run.py
    

    【讨论】:

    • 因为我的 crontab 看起来像 31 10 * * WED /usr/local/bin/python3 /file/to/run.py,所以 31 10 * * WED sleep 10 && /usr/local/bin/python3 /file/to/run.py 可以工作吗?
    • @Nan 是的。您执行的命令是cmd1 && cmd2 类型的,它指出当且仅当cmd1 成功退出时才会执行cmd2。在您的示例中,cmd1 是 sleep 10 和 cmd2 是您的 python 调用。用date > ~/cronoutput.txt给出的cmd2试试吧
    【解决方案2】:

    你不能。 Cron 的粒度为 60 秒。

    您可以构建一个休眠 10 秒然后执行 X 的 SH 脚本,将您的 cron 作业设置为在星期三上午 10:31 运行脚本,然后休眠 10 秒,然后执行 x。

    【讨论】:

      猜你喜欢
      • 2022-12-18
      • 2020-11-01
      • 2020-05-19
      • 2013-11-27
      • 1970-01-01
      • 2011-06-20
      • 2015-07-30
      • 2014-08-07
      • 2017-10-15
      相关资源
      最近更新 更多