安装
go get -u github.com/robfig/cron
Cron 特殊字符
1、星号 ( * )
星号表示将匹配字段的所有值
2、斜线 ( / )
斜线用户 描述范围的增量,表现为 “N-MAX/x”,first-last/x 的形式,例如 3-59/15 表示此时的第三分钟和此后的每 15 分钟,到59分钟为止。即从 N 开始,使用增量直到该特定范围结束。它不会重复
3、逗号 ( , )
逗号用于分隔列表中的项目。例如,在 Day of week 使用“MON,WED,FRI”将意味着星期一,星期三和星期五
4、连字符 ( - )
连字符用于定义范围。例如,9 - 17 表示从上午 9 点到下午 5 点的每个小时
5、问号 ( ? )
不指定值,用于代替 “ * ”,类似 “ _ ” 的存在,不难理解
预定义的 Cron 时间表
@yearly (or @annually)
1月1日午夜运行一次
0 0 0 1 1 *
@monthly
每个月的午夜,每个月的第一个月运行一次
0 0 0 1
@weekly
每周一次,周日午夜运行一次
0 0 0 0
@daily (or @midnight)
每天午夜运行一次
0 0 0 *
@hourly
每小时运行一次
0 0
Demo
func main() { // cron.New(cron.WithSeconds()).AddFunc("@every 1s", ScheduleFunc) c := cron.New(cron.WithSeconds()) c.AddFunc("@every 10m", ScheduleFunc) c.Start() // 主体是 goroutine + for + select + timer 的调度控制 select {} //阻塞主线程停止 }