项目简介
使用Go语言开发的定时任务集中调度和管理系统, 用于替代Linux-crontab
功能特性
- Web界面管理定时任务, 支持动态添加、删除、编辑任务
- crontab时间表达式,精确到秒
- 任务执行失败重试设置
- 任务超时设置
- 延时任务
- 任务类型
- shell任务
- 查看任务执行日志
- 任务执行结果通知, 支持邮件、Slack
1、cron表达式的基本格式
在linux中使用过crontab,对定时任务应该就会有所了解,linux中利用crontab -e打开crontab表来添加定时任务,但是只能精确到分钟,go中却可以精确到秒。表达式如下:
┌─────────────second 范围 (0 - 60)
│ ┌───────────── min (0 - 59)
│ │ ┌────────────── hour (0 - 23)
│ │ │ ┌─────────────── day of month (1 - 31)
│ │ │ │ ┌──────────────── month (1 - 12)
│ │ │ │ │ ┌───────────────── day of week (0 - 6) (0 to 6 are Sunday to
│ │ │ │ │ │ Saturday)
│ │ │ │ │ │
│ │ │ │ │ │
* * * * * *
Linux-crontab时间表达式语法, 支持秒级任务定义
格式: 秒 分 时 天 月 周
示例:
1 * * * * * 每分钟第一秒运行
*/20 * * * * * 每隔20秒运行一次
0 30 21 * * * 每天晚上21:30:00运行一次
0 0 23 * * 6 每周六晚上23:00:00 运行一次
快捷语法:
@yearly 每年运行一次
@monthly 每月运行一次
@weekly 每周运行一次
@daily 每天运行一次
@midnight 每天午夜运行一次
@hourly 每小时运行一次
@every 30s 每隔30秒运行一次
@every 1m20s 每隔1分钟20秒运行一次
@every 3h5m10s 每隔3小时5分钟10秒运行一次
2、特殊字符
星号:匹配所有值
斜线:增长间隔,*/5表示5 10 15....分钟运行
逗号:枚举值,1,13,21表示1 13 21分钟运行
连字符:表示范围,10-15表示10 11 12 13 15分钟运行
问号:只用于日和星期,表示不指定,可用*替代
1.安装Go
使用go程序必须先有go,因此这里以最简单的方式进行安装介绍。
1.1 windows安装
下载链接
https://studygolang.com/dl/golang/go1.12.5.windows-amd64.msi
安装
直接下一步下一步,直到完成即可。windows默认会添加到环境变量中。
测试安装成功与否
cmd中输入以下命令:
go version
如果能输出版本信息,说明安装成功
1.2 linux安装
安装
yum install go
测试
go version
2.下载gocron
gocron需要使用下载gocron和gocron-node
这我里以windows下为例,linux也是一样的。
下载地址:https://github.com/ouqiang/gocron/releases
下载后在cmd中运行gocron与gocron-node
启动gocron
giftpc@gift MINGW64 /d/gocron
$ /d/gocron/gocron.exe web
[Macaron] listening on 0.0.0.0:5920 (production)
启动gocron-node
giftpc@gift MINGW64 /d/gocron
$ /d/gocron/gocron-node.exe
time="2019-06-04T13:32:12+08:00" level=info msg="server listen on 0.0.0.0:5921"
打开web界面
从上面可以看到gocron默认监听的是5920端口,通过浏览器访问:localhost:5920便可以打开web管理窗口
首页打开需要进行一些安装配置(需要有数据库支持,建好数据库后自动建的表)
安装完成后会跳转到登录界面
添加任务节点
这里的每个定时任务都需要在一个任务节点下,因此想要添加一个定时任务需要先添加一个任务节点,示例如下:
添加定里任务
这里按照以下图片进行添加即可:
3. 文档
添加任务时的一些规则与语法设置方式,可以参考文档进行学习与配置。
文档-https://github.com/ouqiang/gocron/wiki