Skip to content

定时任务

Crontab 时间表达式

时间表达式格式

gocron 使用 Linux-crontab 时间表达式语法,支持秒级任务定义。

格式秒 分 时 天 月 周

表达式示例

bash
1 * * * * *           # 每分钟第一秒运行
*/20 * * * * *        # 每隔20秒运行一次
0 30 21 * * *         # 每天晚上21:30:00运行一次
0 0 23 * * 6          # 每周六晚上23:00:00运行一次

快捷语法

gocron 支持以下快捷语法:

快捷语法说明等价表达式
@yearly每年运行一次0 0 0 1 1 *
@monthly每月运行一次0 0 0 1 * *
@weekly每周运行一次0 0 0 * * 0
@daily每天运行一次0 0 0 * * *
@midnight每天午夜运行一次0 0 0 * * *
@hourly每小时运行一次0 0 * * * *
@every 30s每隔30秒运行一次-
@every 1m20s每隔1分钟20秒运行一次-
@every 3h5m10s每隔3小时5分钟10秒运行一次-

执行方式

gocron 支持两种任务执行方式:

1. Shell 命令

在远程主机上执行 shell 命令。

示例

bash
ps aux | grep gocron
cd /tmp && ls -la
echo "Hello, gocron!" > /tmp/test.txt

注意

Shell 任务执行时间不能超过 86400 秒(24小时)

2. HTTP 请求

执行 HTTP-GET 请求。

示例

https://api.example.com/task/run
http://localhost:8080/webhook

注意

HTTP 任务执行时间不能超过 300 秒(5分钟)

任务配置

任务超时时间

任务执行超时后会被强制结束,默认为 0(不限制)。

  • Shell 任务:最长执行时间不能超过 86400 秒
  • HTTP 任务:最长执行时间不能超过 300 秒

任务执行失败重试

当出现以下情况时,任务会被标记为执行失败:

  • 无法连接远程主机
  • Shell 命令返回值非 0
  • HTTP 响应码非 200

重试机制

  • 可设置重试次数(取值范围:1-10)
  • 每次重试间隔时间 = 重试次数 × 1分钟
  • 按 1分钟、2分钟、3分钟... 的间隔进行重试

示例:重试次数设置为 2

  1. 任务执行失败
  2. 休眠 1 分钟后,第一次重试
  3. 如果仍然失败,休眠 2 分钟后,第二次重试
  4. 如果还是失败,任务最终标记为失败

提示

默认值为 0,表示不重试

单实例运行

启用单实例运行后,如果上次任务未执行完成,下次任务将不会执行,任务日志状态会显示为"取消"。

这个功能可以防止任务重复执行,特别适用于执行时间较长的任务。

任务依赖

gocron 支持设置任务之间的依赖关系。当任务 A 依赖任务 B 时:

  • 任务 A 会在任务 B 执行成功后才开始执行
  • 如果任务 B 执行失败,任务 A 将不会执行

相关文档