golang cron 定時任務使用

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

1、cron 運算式的基本格式

用過 linux 的應該對 cron 有所瞭解。linux 中可以通過 crontab -e 來配置定時任務。不過,linux 中的 cron 只能精確到分鐘。而我們這裡要討論的 Go 實現的 cron 可以精確到秒,除了這點比較大的區別外,cron 運算式的基本文法是類似的。(如果使用過 Java 中的 Quartz,對 cron 運算式應該比較瞭解,而且它和這裡我們將要討論的 Go 版 cron 很像,也都精確到秒)cron(計劃任務),顧名思義,按照約定的時間,定時的執行特定的任務(job)。cron 運算式 表達了這種約定。cron 運算式代表了一個時間集合,使用 6 個空格分隔的欄位表示。
欄位名 是否必須 允許的值 允許的特定字元
秒(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)欄位如果沒提供,相當於是 *

2、特殊字元說明

1)星號(*)表示 cron 運算式能匹配該欄位的所有值。如在第5個欄位使用星號(month),表示每個月2)斜線(/)表示增長間隔,如第1個欄位(minutes) 值是 3-59/15,表示每小時的第3分鐘開始執行一次,之後每隔 15 分鐘執行一次(即 3、18、33、48 這些時間點執行),這裡也可以表示為:3/153)逗號(,)用於枚舉值,如第6個欄位值是 MON,WED,FRI,表示 星期一、三、五 執行4)連字號(-)表示一個範圍,如第3個欄位的值為 9-17 表示 9am 到 5pm 直接每個小時(包括9和17)5)問號(?)只用於日(Day of month)和星期(Day of week),\表示不指定值,可以用於代替 *

3、樣本

  • 最簡單crontab任務
package mainimport (    "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{}}
啟動後輸出如下:2017/07/06 18:28:30 cron running: 12017/07/06 18:28:35 cron running: 22017/07/06 18:28:40 cron running: 32017/07/06 18:28:45 cron running: 42017/07/06 18:28:50 cron running: 5...
  • 多個定時crontab任務
package mainimport (    "github.com/robfig/cron"    "log"    "fmt")type TestJob struct {}func (this TestJob)Run() {    fmt.Println("testJob1...")}type Test2Job struct {}func (this Test2Job)Run() {    fmt.Println("testJob2...")}//啟動多個任務func main() {    i := 0    c := cron.New()    //AddFunc    spec := "*/5 * * * * ?"    c.AddFunc(spec, func() {        i++        log.Println("cron running:", i)    })    //AddJob方法    c.AddJob(spec, TestJob{})    c.AddJob(spec, Test2Job{})    //啟動計劃任務    c.Start()    //關閉著計劃任務, 但是不能關閉已經在執行中的任務.    defer c.Stop()    select{}}
go run crontab/crontab-2.go 啟動後輸出如下:testJob1...2017/07/07 18:46:40 cron running: 1testJob2...2017/07/07 18:46:45 cron running: 2testJob1...testJob2...2017/07/07 18:46:50 cron running: 3testJob1...testJob2...2017/07/07 18:46:55 cron running: 4testJob1...testJob2...testJob2...testJob1...2017/07/07 18:47:00 cron running: 5...
  • 可結合toml yaml 配置需要定時執行的任務
...
參考http://ju.outofmemory.cn/entry/65356
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.