Gocron 是 Go 语言写的轻量级定时任务集中调度和管理系统,用来替代 Linux-crontab,项目地址:github.com/ouqiang/gocron。核心卖点是 Web 界面管理任务,支持到秒级表达式、失败重试、超时强杀、任务依赖、权限控制,通知支持邮件、Slack、Webhook,跨 Windows、Linux、Mac OS 平台。
准备 MySQL
RPM 方式安装,从 https://downloads.mysql.com/archives/community/ 下载 mysql-community-server、mysql-community-client、mysql-community-common、mysql-community-libs:

上传到服务器后安装:
[root@localhost ~]# rpm -ivh mysql-community*
[root@localhost ~]# systemctl start mysqld.service
[root@localhost ~]# systemctl enable mysqld.service
重置 root 密码,先把 validate_password 策略调低:
[root@localhost ~]# cat /var/log/mysqld.log | grep 'password'
[root@localhost ~]# mysql -uroot -p
##密码验证策略低要求
mysql> set global validate_password_policy=0; (0或LOW代表低级)
##密码至少要包含的小写字母个数和大写字母个数
mysql> set global validate_password_mixed_case_count=0;
##密码至少要包含的数字个数。
mysql> set global validate_password_number_count=0;
##密码至少要包含的特殊字符数
mysql> set global validate_password_special_char_count=0;
##密码长度
mysql> set global validate_password_length=3;
##再次设置密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
建库:
mysql> CREATE DATABASE `gocron` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
安装调度器(gocron web)
发布包在 github.com/ouqiang/gocron/releases:

gocron 是 Go 程序,缺 go 环境先装:
[root@localhost ~]# go env
-bash: go: 未找到命令
[root@localhost ~]# yum install golang
下载 v1.5.3 并解压:
[root@localhost ~]# wget https://github.com/ouqiang/gocron/releases/download/v1.5.3/gocron-v1.5.3-linux-amd64.tar.gz
[root@localhost ~]# tar -zxvf gocron-v1.5.3-linux-amd64.tar.gz -C /usr/local/
启动,默认监听 5920:
[root@localhost ~]# cd /usr/local/gocron-linux-amd64
[root@localhost gocron-linux-amd64]# nohup ./gocron web >/tmp/gocron.log 2>&1 &
#默认监听端口为5920
[root@localhost gocron-linux-amd64]# firewall-cmd --permanent --zone=public --add-port=5920/tcp
success
[root@localhost gocron-linux-amd64]# firewall-cmd --reload
success
Web 界面
访问 http://ip:5920,首次进入初始化管理员账号:



部署任务节点(gocron-node)
执行方式为 shell 的任务,必须在目标主机上装 gocron-node,默认端口 5921。注意:节点不能用 root 启动,要建普通用户。
[root@localhost ~]# wget https://github.com/ouqiang/gocron/releases/download/v1.5.3/gocron-node-v1.5.3-linux-amd64.tar.gz
[root@localhost ~]# tar -zxvf gocron-node-v1.5.3-linux-amd64.tar.gz -C /usr/local/
[root@localhost ~]# useradd gocron-user
目录属主给普通用户,放通端口,用该用户拉起:
[root@localhost ~]# chown -R gocron-user. /usr/local/gocron-node-linux-amd64/
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-port=5921/tcp
success
[root@localhost ~]# firewall-cmd --reload
success
#用普通用户来启动服务
[root@localhost ~]# su - gocron-user -c " cd /usr/local/gocron-node-linux-amd64 && nohup ./gocron-node > /tmp/gocron-node.log 2>&1 &"
在 Web 端把节点加进来:




然后创建任务,选执行节点,配表达式:






任务执行结果和日志在界面上直接查:

使用注意点
shell 任务找不到节点就是 5921 没通或节点用 root 起挂了;HTTP 任务由调度器直接发请求,不需要节点,探活类任务用它更省事。crontab 表达式精确到秒,迁移旧任务时注意语义核对,建议先在界面里空跑一天再切换。


















暂无评论内容