先上代码:
package main
import (
l4g "github.com/alecthomas/log4go"
"github.com/robfig/cron"
)
func text() {
l4g.Info("text")
}
func main() {
c := cron.New()
c.AddFunc("* * * * * *", func() { text() })
c.Start()
select {}
}
执行结果如下:
就是这么简单实现了 每个1秒钟自动执行text函数的功能,虽然time.NewTicker(time.Second)也很简单。。
好了,简单介绍一下使用方法。
crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。
它的时间表格式如下:
f1 f2 f3 f4 f5 f6 program
其中 f1 是表示秒,f2表示分钟,f3 表示小时,f4 表示一个月份中的第几日,f5 表示月份,f6表示一个星期中的第几天。program 表示要执行的程式。
在go中,我们使用github.com/robfig/cron包来实现crontab的功能。
首先cron.New()一个实例,然后添加定时任务AddFunc(),他接受两个函数第一个是时间,第二个是函数。我们使用*表示每一秒,每一分…..
上例中 因为传入的是**,所以他就会每一秒钟执行一次text。
其他例子:
(1) */2 * * * * * 每个偶数分执行text
(2) */2 */2 * * * * 每个偶数分 并且是偶数秒执行text
(3) 2,4,6 * * * * * 每分钟的2,4,6这三个秒执行text
(4) 2,4,6 5-6 * * * 1 每周一的5点2,4,6秒和6点2,4,6秒执行text
(5) @daily 每天一次
(6) @midnight 同上
(7) @every 1m30s 定时1分30秒执行text
效果图如下: