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()都可以的

标签