cron基本使用
摘自:ofollow,noindex" target="_blank">https://blog.csdn.net/skh2015...
cron
表示式共有六個域,*.*.*.*.*.*
分別表示Seconds
,Minutes
,Hours
,DayofMonth
,Month
,DayofWeek
- 基本格式
欄位名 | 是否必須 | 允許的值 | 允許的特定字元 |
---|---|---|---|
秒(Seconds) | 是 | 0-59 | * / , – |
分(Minutes) | 是 | 0-59 | * / , – |
時(Hours) | 是 | 0-23 | * / , – |
日((Day of month) | 是 | 1-31 | * / , – ? |
月((Month) | 是 | 1-12 or JAN-DEC | * / , – |
星期(Day of week) | 否 | 0-6 or SUM-SAT | * / , – ? |
1)月(Month)和星期(Day of week)欄位的值不區分大小寫,如:SUN、Sun和 sun是一樣的。
2)星期(Day of week)欄位如果沒提供,相當於是 *
- 特殊字元
1)星號(*)
表示cron表示式能匹配該欄位的所有值。如在第5個欄位使用星號(month),表示每個月
2)斜線(/)
表示增長間隔,如第1個欄位(minutes)值是3-59/15
,表示每小時的第3分鐘開始執行一次,之後每隔 15 分鐘執行一次(即 3、18、33、48這些時間點執行),這裡也可以表示為:3/15
例如:spec := "/5 " //每隔5s執行一次
3)逗號(,)
用於列舉值,如第6個欄位值是 MON,WED,FRI,表示星期一、三、五執行
例如: spec := "52,54 9 " //每天9:52分和9:54分的每秒都執行一次
4)連字號(-)
表示一個範圍,如第3個欄位的值為 9-17 表示 9am到 5pm直接每個小時(包括9和17)
例如:spec := "15-30 *" //每分鐘的15-30s執行定時任務
5)問號(?)
只用於日(Day of month)和星期(Day of week),表示不指定值,可以用於代替 *
- golang語言中使用
package main import ( "github.com/robfig/cron" "log" ) func main() { i:= 0 c:= cron.New() spec := "*/5 * * * * ?" c.AddFunc(spec, func() { i++ log.Println("cron running:", i) }) c.Start() select{}