從 06:05 到 22:05 每 15 分鐘啟動一次 cron 作業

從 06:05 到 22:05 每 15 分鐘啟動一次 cron 作業

我需要每 15 分鐘執行一次 cron 作業,從 06:05 開始到 22:05 結束。

0 5/15 6-22 * * *

以下語法包括 22:35 和 22:50。

知道如何實現這一目標嗎?是否可以用一條線實現這一點,還是需要配置多條線?

答案1

用一個 cronline 是可能的,但只能用技巧

SHELL=/bin/bash
5-50/15 6-22 * * * [[ '2220 2235 2250' =~ "$(date +\%H\%M)" ]] || /path/to/script

或使用sh(和bash)

SHELL=/bin/sh
5-50/15 6-22 * * * case "$(date +\%H\%M)" in 2220|2235|2250) ;; *) /path/to/script;;esac

請注意 crontab 所需的百分號 (%) 字元的反斜線轉義。

答案2

xmodulo 的「Cron Job」已獲得 CC BY 2.0 許可

*/15 6-22 * * * /path/to/script

或者

5,20,35,50 6-22 * * *  /path/to/script

欄位可以是星號 (*),它總是代表「first-last」。允許數字範圍。範圍是用連字號分隔的兩個數字。指定範圍包括在內。例如,「小時」條目的 8-11 指定在 8、9、10 和 11 小時執行。

允許使用清單。列表是一組用逗號分隔的數字(或範圍)。例:“1,2,5,9”,“0-4,8-​​12”。

步長值可以與範圍結合使用。範圍後面帶有“”指定在該範圍內跳過數字值。例如,可以在小時欄位中使用「0-23/2」來指定每隔一小時執行一次命令(V7標準中的替代方法是「0,2,4,6,8,10,12,14,16 ,18,20,22")。星號後面也允許使用步驟,因此如果您想說“每兩個小時”,只需使用“*/2”。

名稱也可用於「月」和「星期幾」欄位。使用特定日期或月份的前三個字母(不區分大小寫)。不允許使用名稱範圍或清單。

「第六」欄位(該行的其餘部分)指定要執行的命令。該行的整個命令部分(直到換行符或 % 字元)將由 /bin/sh 或 cronfile 的 SHELL 變數中指定的 shell 執行。命令中的百分號 (%),除非以反斜線 () 轉義,否則將被更改為換行符,並且第一個 % 之後的所有資料都將作為標準輸入發送到命令。

注意:命令執行的日期可以由兩個欄位指定 - 月份中的某一天和星期幾。如果兩個欄位都受到限制(即不是 *),則當任一欄位與目前時間相符時將執行該指令。例如,「30 4 1,15 * 5」將導致命令在每月 1 日和 15 日以及每個星期五的凌晨 4:30 運行。

答案3

我個人會把它分成兩行:

5-50/15 6-21 * * * /path/to/script
5       22   * * * /path/to/script

第一行覆蓋 0605-2150,第二行 - 在 2205 進行額外運行。

如果你真的想要一個班輪,我會進行不精確的檢查,以適應可能不精確的工作開始時間:

5-50/15 6-22 * * * [[ $(date +"\%-H\%M") -le 2210 ]] && /path/to/script

答案4

雖然有點晚了,但為了完整起見,您可以在 CronBuddy.com 上獲取任何 cron 表達式的未來運行時間列表 - 這是查看將要發生的情況的簡單方法。

相關內容