cron 用法
首先先把第三方库下载下来:
$ go get -v -u github.com/robfig/cron
我们来看一个小的demo:每隔一秒打印"hello world"
package main import ( "github.com/robfig/cron" "log" ) func main() { log.Println("Starting...") c := cron.New() // 新建一个定时任务对象 c.AddFunc("* * * * * *", func() { log.Println("hello world") }) // 给对象增加定时任务 c.Start() select {} }
这个小功能用time.Ticker也可以实现,我们为什么要使用cron来完成呢?别急接着往下面看就知道了。
cron表达式
我们在上面demo中使用了AddFunc,第一个参数我们传递了一个字符串是:"* * * * * *",这六个*是指什么呢?
┌─────────────second 范围 (0 - 60)
│ ┌───────────── min (0 - 59)
│ │ ┌────────────── hour (0 - 23)
│ │ │ ┌─────────────── day of month (1 - 31)
│ │ │ │ ┌──────────────── month (1 - 12)
│ │ │ │ │ ┌───────────────── day of week (0 - 6) (0 to 6 are Sunday to
│ │ │ │ │ │ Saturday)
│ │ │ │ │ │
│ │ │ │ │ │
* * * * * *
匹配符号
example
比如我们的手机卡假设都是在每个月的开始时间就更新资费:
"0 0 0 1 * *" // 表示每个月1号的00:00:00
"0 1 1 1 * *" // 表示每个月1号的01:01:00
每隔5秒执行一次:"*/5 * * * * ?"
每隔1分钟执行一次:"0 */1 * * * ?"
每天23点执行一次:"0 0 23 * * ?"
每天凌晨1点执行一次:"0 0 1 * * ?"
每月1号凌晨1点执行一次:"0 0 1 1 * ?"