robfig/cron

cron

Linux中使用内置cron计划任务服务,按照约定的时间定时执行特定的任务(job)。cron服务启动后会读取配置文件/etc/crontabcron服务根据命令和执行时间按时来调用工作任务。

cron服务操作命令

# 启动计划任务服务
$ service crond start

# 关闭计划任务服务
$ service crond stop

# 重启计划任务服务
$ service crond restart

# 重载计划任务配置
$ service crond reload

cron服务提供了crontab命令来设置计划任务

$ crontab [-u user] [-e] [-l] [-r]
参数描述
crontab -u user用于设定用户的定时服务,Linux中每个用户对应着一份crontab任务清单。
crontab -e编辑用户的crontab文件内容来设置定时任务
crontab -l显示用户的crontab文件内容
crontab -r从/var/spool/cron目录中删除用户的crontab文件
crontab -i在删除用户crontab时给出确认提示

crontab命令可固定的间隔时间执行指定的系统指令或shell script脚本,时间间隔的单位是分钟、小时、日、月、周即以上的任意组合。

$ crontab -e

当使用crontab命令编辑完用户的计划任务后,cron服务自动会在/var/spool/cron文件夹下生成一个与此用户同名的文件,该文件记录对应用户的计划任务信息,此文件是禁止直接编辑的,只能通过crontab -e命令来编辑。cron服务启动后每过1分钟会读取用户配置的计划任务文件,检查是否需要执行里面的命令,因此修改后无需重启cron服务。

cron表达式基础语法 - 定时任务时间规则

  • cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每个域代表一个含义。
minute hour day month week command
时间名称取值范围描述
minute分钟0~59整数
hour小时0~23整数
day日期1~31一个月中的某一天
month月份1~12整数
week星期几0~70或7表示星期日
command命令--
# .---------------- 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

每个域都可以使用数字,但也可以使用下列特殊字符。

特殊字符名称描述
*星号匹配所有可能的值
,逗号枚举值,使用逗号分隔指定的列表任务。
-中杠范围,整数之间使用中杠表示一个整数范围。
/正斜线增长间隔,指定时间的间隔频率
?问号仅用于日和星期,可代替*星号。

例如:

表达式分钟小时日期月份星期描述
0 6 * * * cmd06***每天早上6:00点执行一次任务
0 */2 * * * cmd0*/2***每间隔2小时执行一次任务
*/5 * * * * cmd*/5****每隔5分钟执行一次任务

robfig/cron

robfig/cron包是Go的定时任务框架,实现了cron计划任务规范的解析器和任务运行器。不同之处在于robfig/cron不仅兼容了Linux标准的Crontab格式,而且扩展到秒级。

下载安装包

$ go get -u -v github.com/robfig/cron/v3

例如:

//创建任务调度器实例
c := cron.New()
//注册任务到调度器,注册的任务都是异步执行的。
c.AddFunc("0 30 * * * *", func() {
    fmt.Println("every hour on the half hour run...")
})
c.AddFunc("@hourly", func() {
    fmt.Println("every hour run...")
})
//启动计划任务
c.Start()

cron.New

  • cron.New()会根据本地时间创建一个全新且空白的计划任务实例
func New(opts ...Option) *Cron

cron.AddFunc

  • cron.AddFunc()会向计划任务实例中添加一个回调函数,按指定时间表执行回调函数。
  • cron.AddFunc()用来注册任务到调度器中,当任务要执行时会使用goroutines调用,这样每个任务都不会发生阻塞。
  • 调度器中的任务都会以异步的方式来执行
func (c *Cron) AddFunc(spec string, cmd func()) (EntryID, error)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值