Cron
我應該在 crontab 中使用 1,15 還是 */15 每 15 天執行一次命令?
據我所知,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 * *
。後者將在月份
1st
和15th
月份執行命令,因為它為“月份的日期”欄位提供了固定的逗號分隔值。定義的
/
步驟,這意味著*/15
將每天執行15
,從 開始1
,這意味著:1st
,16th
(對於所有月份)以及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 * * *
表示 at00:00
、02:00
等04:00
。