【问题标题】:crontab, schedule jobs to run in a sequence in the shortest timecrontab,调度作业在最短的时间内按顺序运行
【发布时间】:2015-03-14 12:26:21
【问题描述】:

假设 3 个作业按顺序运行,

jobA  -->  jobB  -->  jobC
~20min     ~25min      ~5m

一个应该在前一个完成时执行。尽管已知合理的持续时间,但个人持续时间可能会有所不同。 可以使用crontab 将这个过程保持在执行循环中,但是如何优化它以尽可能快地运行序列? 作业/进程不直接通信。

目前我在 crontab 中安排了这 3 个作业,所以 jobA 在第 0 分钟开始,jobB 在第 30 分钟开始,jobC 在第 40 分钟开始。但在大多数情况下,jobB 和 jobC 可以更早开始。

我们的想法是尽可能快地每小时运行一次此序列。

【问题讨论】:

    标签: performance scheduled-tasks crontab


    【解决方案1】:

    Cron 使用 shell 执行命令。这样运行一个长命令就足够了。

    jobA && jobB && jobC
    

    仅当jobA 成功时,使用&& 才会运行jobB

    独立安排这些作业并不能保证 A 在 B 之前完成或 C 在 B 之前完成。

    【讨论】:

      【解决方案2】:

      一种方法——创建单个脚本:driver.shl:

      /path/to/JobA [parameters]
      if [ $? -ne 0 ]; then
         echo 'error' | mailx -s 'job JobA failed ' me@mycompany.com
      /path/to/JobB [parameters]
      if [ $? -ne 0 ]; then
         echo 'error' | mailx -s 'job JobB failed ' me@mycompany.com
      /path/to/JobC [parameters]
      if [ $? -ne 0 ]; then
         echo 'error' | mailx -s 'job JobC failed ' me@mycompany.com
      

      在 crontab 中安排 driver.shl 每小时运行一次。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-23
        • 2019-03-30
        • 1970-01-01
        • 2018-08-01
        • 2017-04-18
        • 1970-01-01
        • 2021-04-26
        • 1970-01-01
        相关资源
        最近更新 更多