Cron

每 15 分鐘 + 在特定時間在一行中執行一次 crontab?

  • July 6, 2020

簡而言之,我需要在一行中做到這一點:

0,15,30,45  * * * * my_command
50,55      23 * * * my_command

我想在午夜前每 15 分鐘 + 兩次額外執行一次命令。是否可以在一個 crontab 的行中執行此操作?

Cron 本質上是一個非常簡單的調度程序。

您目前正在做的事情,編寫兩個不同的計劃,它們結合起來實現比原生 cron 語法支持的更複雜的計劃,這通常是最好的解決方案。

這是一個直覺的解決方案,其他管理員也可以輕鬆閱讀和理解。

另一種解決方案是簡單地安排您的作業更頻繁地執行。

然後,您應該在您的作業中建構額外的邏輯(或圍繞實際作業的 shell 腳本包裝器),以檢查條件是否適合執行作業(並且這些條件可能比僅檢查時間要復雜得多) 當它們不是時,優雅地退出。

這種方法,在開始實際工作之前檢查工作開始時條件是否合適,如果不合適則優雅退出,如果正確完成,可能是一個非常強大的解決方案,可以解決 CRON 通常不會的整個範圍的潛在潛在問題’無法解決。

(例如,高頻批處理作業中的常見檢查是防止多個計劃的批處理同時執行,因為突然一個批處理的處理時間比預期的要長得多,並且在 cron 安排下一次迭代之前沒有完成。)

在虛擬碼中:

一個 cron 工作:

* * * * * *  /path/to/wrapper_for_my_job

#!/bin/your-favourite-scripting-language
# wrapper_for_my_job: only execute my_job when the time is right


if current_time == [0,15,30,45 minutes past the hour]
   then 
       my_job
else if current_time == [23:50 ETC OR 23:55 UTC]
    then 
        my_job
else
     exit 0

引用自:https://serverfault.com/questions/1024126