go语言之定时任务cron
golang也可以执行定时任务,需要借助第三方包,包名如下:
github.com/robfig/cron
cron定时任务表达式如下:

与linux的crontab大致相同,但是比crontab多了第一个参数second,表示秒, crontab的定时任务分为”分、时、日、月、周”,cron的定时任务分为”秒、分、时、日、月、周”
匹配符号如下:
- 星号(*):表示 cron 表达式能匹配该字段的所有值
- 斜线(/):表示增长间隔,意思是每隔多长时间执行一次
- 逗号(,):枚举值
- 连字好(-):表示一个范围
- 问号(?):只能用于日和周的位置,表示不指定值,可代替*
"*/5 * * * * ?" //每隔5s指定一次
"0 */1 * * * ?" //每隔1分钟执行一次
"0 5/10 * * * ?" //每个小时的第5分开始执行,每隔10分钟执行一次
"0 0 22 * * ?" //每天22点执行一次(22点0分0秒)
"0 0 1 * * ?" //每天凌晨1点执行一次
"0 0 1 1 * ?" //每个月1号凌晨1点执行一次
"0 22,25,36 * * * ?" //在22分、25分、26分执行一次
"0 10-30/5 * * * ?" //每个小时的10分到30分执行,每隔5分执行一次
也可以使用预定义的等式代替上述表达式,如下:
| 输入 | 描述 | 等式 |
| @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 * * * * |
1、下面通过AddFunc()实现一个单任务定时任务,每隔5s执行一次任务,如图:


2、下面表示通过AddJob()添加2个定时任务,每隔3s和5s执行一次,如图:


从上图看出,定时任务1每隔3s执行一次,定时任务2每隔5s执行一次
注意:AddFunc()底层也是基于AddJob()实现的,因此如果执行多个定时任务,通过AddFunc()和AddJob()都可以的


