在linux里可以通过crontab -e或者vi /etc/crontab编辑定时任务,区别在于后者只有root用户可以,还可以指定shell环境,不建议修改,修改前建议备份,前者任何用户都可以使用,两者修改后都不用修改自动重启
linux里crontab实现的定时任务
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
go中可以通过协程来实现
# .------------------second (0 - 59)
# | .---------------- minute (0 - 59)
# | | .------------- hour (0 - 23)
# | | | .---------- day of month (1 - 31)
# | | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun
# | | | | | |
# * * * * * * user-name command to be executed
from xxx import crontab
func main() {
//执行任务代码
xxx
go func() {
CronExec()
}()
}
package crontab
import "github.com/robfig/cron"
func CronExec() {
spec := "*/2 * * * * ?" //每2s执行一次
spec := "0 5 10 * * ?" //每天早上10:05:00执行一次
spec := "* * 10 * * ?" //每天10点开始的一个小时一直在执行
spec := "* 1-59/10 * * * ?" //每天1分到59分每10分钟执行一次
c := cron.New()
id,err := c.AddFunc(spec, func()) {
crontab()
}
if err != nil {
fmt.Sprintf("crontab exec error: %v with id: %v", err, id)
}
c.Start()
return c
func crontab() {
fmt.Sprint("crontab exec...")
}
注意事项:
1、go里的crontab时间格式是从second开始
2、go里的crontab时间格式最后一个是?