Cron
每 15 分鐘 + 在特定時間在一行中執行一次 crontab?
簡而言之,我需要在一行中做到這一點:
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