Cron

我應該在 crontab 中使用 1,15 還是 */15 每 15 天執行一次命令?

  • November 21, 2020

據我所知,crontab 有這些欄位,從左到右開始。

1   minutes 0-59
2   hours 0-23
3   days of month 0-31
4   month 1-12
5   day of the week 0-6
6   command

我想在 15:30 每 15 天執行一次 foo 命令這是正確的,因為該月的執行命令 1 和 15 有 30 天(31 天)所以每 15 天執行一次

30 15 1,15 * * /sbin/foo -a 1> /dev/null

這種語法也正確嗎?

30 15 */15 * * /sbin/foo -a 1> /dev/null

系統是使用 Dillon Cron 的 Slackware Linux

此語法30 15 */15 * *是正確的,但它與 this 不同30 15 1,15 * *

後者將在月份1st15th月份執行命令,因為它為“月份的日期”欄位提供了固定的逗號分隔值。

定義的/步驟,這意味著*/15將每天執行15,從 開始1,這意味著:1st16th(對於所有月份)以及31th(對於任何有 31 天的月份)。


如前所述man crontab(5),步長值可以與範圍結合使用。因此,如果您想使用/您可以執行的語法獲得相同的結果:30 15 1-15/14 * *這意味著30 15 1,15 * *.

另一個例子,如果你想每 15 天執行一次,但在每個月的 5 號和 20 號執行:5-20/15. 當然,對於這種情況,寫起來更具可讀性5,20。但是將範圍與步驟相結合,可以定義範圍執行的開始結束。

對於本月的第 1、3、5、7 天等:*/2

對於本月的第 2、4、6、8 天等:2-30/2

對於 Minutes( 0-59) 和 Hours( 0-23),第一個有效值是0這樣的:0 */2 * * *表示 at 00:0002:0004:00

引用自:https://unix.stackexchange.com/questions/620586