gocron 安装手册

gocron离线安装与配置教程

前置安装

需要安装Java jdk 1.8版本和MySQL。

下载gocron

去官网下载:从https://github.com/ouqiang/gocron该网站的releases下下载

本篇教程使用的是:

gocron-node-v1.5.3-linux-amd64.tar.gz(客户端)

gocron-v1.5.3-linux-amd64.tar.gz(服务端)

上传gocron离线包

利用 WinSCP工具,将下载的压缩包上传到/usr/local目录下面

解压离线包

解压gocron离线包使用命令:

tar zxvf gocron-node-v1.5.3-linux-amd64.tar.gz
tar zxvf gocron-v1.5.3-linux-amd64.tar.gz

创建gcadmin用户

groupadd -g 531 gcadmin
useradd -g 531 -u 531 -m -d /usr/local/gocron/gocron-node-linux-amd64 -s /bin/bash gcadmin
chown -R gcadmin:gcadmin /usr/local/gocron/gocron-node-linux-amd64
echo "gcadmin" | passwd --stdin gcadmin

关闭防火墙

关闭防火墙 :

systemctl stop firewalld.service  

关闭 开机自启动防火墙:

systemctl disable firewalld.service  

启动gocron服务端

进入到gocron-linux-amd64目录下后,执行:

nohup ./gocron web >/dev/null 2>&1 &

配置gocron服务端

访问http://localhost:5920 按提示进行配置,需要提前创建数据库。

管理用户名为:admin

密码为:Admin@123

启动gocron客户端

进入到gocron-node-linux-amd64目录下后,登录gcadmin:

su - gcadmin

执行:

nohup ./gocron-node >/dev/null 2>&1 &

注意nohup ./gocron-node >/dev/null 2>&1 & 此命令只能在非root用户下执行

配置定时任务

以上步骤完成即可配置定时任务,配置定时任务时,需要先添加任务节点,添加完任务节点即可新增定时任务。

### 如何在Go语言中添加Cron任务 要在Go语言中实现定时任务(Cron Job),可以使用第三方库 `robfig/cron` 或者其他类似的调度工具。这些库提供了强大的功能来定义和管理周期性执行的任务。 以下是基于 `robfig/cron` 的解决方案: #### 安装依赖 首先,安装所需的包: ```bash go get github.com/robfig/cron/v3 ``` #### 使用示例代码 下面是一个简单的例子,展示如何创建并运行一个 Cron 任务: ```go package main import ( "fmt" "log" "github.com/robfig/cron/v3" ) func main() { // 创建一个新的Cron实例 c := cron.New() // 添加一个每分钟触发一次的任务 id, err := c.AddFunc("@every 1m", func() { fmt.Println("Every minute job executed!") }) if err != nil { log.Fatalf("Failed to add cron job: %v\n", err) } fmt.Printf("Job added with ID: %d\n", id) // 启动Cron调度器 c.Start() // 阻止程序退出以便观察效果 select {} } ``` 上述代码展示了如何通过 `AddFunc` 方法向 Cron 调度器注册一个函数,并设置其按照指定的时间间隔运行。这里使用的表达式 `"@every 1m"` 表明该任务会每隔一分钟被执行一次[^4]。 如果需要更复杂的计划安排或者参数传递给任务,则可以通过 `AddJob` 来完成。例如: ```go type MyCustomJob struct{} func (c MyCustomJob) Run() { fmt.Println("My custom job running...") } func main() { c := cron.New() c.Schedule(cron.Every(5*time.Second), MyCustomJob{}) c.Start() select {} } ``` 此版本允许自定义结构体满足特定接口需求从而更加灵活地控制行为逻辑[^5]。 关于为什么选择相对时间格式而非绝对日期字符串作为输入形式,在某些场景下确实更为便捷高效——比如自动化脚本编写或是频繁变动的需求环境里,利用像 “每天凌晨两点钟” 这样的描述要比精确到具体某一天更容易维护也更具可读性[^6]。 最后提醒一点,尽管优秀的变量命名习惯有助于提升代码质量,但对于复杂业务逻辑部分仍建议辅以单元测试加以保障长期稳定性[^7]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值