From ff2228ed50b24181a97dde28fe5cf5bc1501b1c9 Mon Sep 17 00:00:00 2001 From: ouqiang Date: Sat, 22 Jul 2017 09:24:50 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 14 ++++++-------- scheduler.png | Bin 13108 -> 14869 bytes templates/common/header.html | 3 +-- templates/host/index.html | 2 +- templates/host/menu.html | 2 +- templates/task/index.html | 4 ++-- templates/task/log.html | 2 +- templates/task/task_form.html | 6 +++--- 8 files changed, 15 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 7561250..6137b21 100644 --- a/README.md +++ b/README.md @@ -7,16 +7,16 @@ 原有的延时任务拆分为独立项目[延迟队列](https://github.com/ouqiang/delay-queue) ## 功能特性 -* Web界面管理定时任务, 支持动态添加、删除、编辑任务 +* Web界面管理定时任务, 支持动态添加、删除任务 * crontab时间表达式,精确到秒 * 任务执行失败重试设置 * 任务超时设置 * 任务依赖配置 * 任务类型 * shell任务 - > 在远程服务器上执行shell命令 + > 在任务节点上执行shell命令 * HTTP任务 - > 访问指定的URL地址 + > 访问指定的URL地址, 由调度器直接执行, 不依赖任务节点 * 查看任务执行日志 * 任务执行结果通知, 支持邮件、Slack @@ -39,23 +39,23 @@ ## 安装 ### 二进制安装 -> Windows平台默认后台运行) 1. 解压压缩包   2. `cd 解压目录` 3. 启动 * 调度器启动 * Windows: `gocron.exe web` * Linux、Mac OS: `./gocron web` -* 任务执行器启动 +* 任务节点启动 * Windows: `gocron-node.exe ip:port (默认0.0.0.0:5921)` * Linux、Mac OS: `./gocron-node ip:port (默认0.0.0.0:5921)` 4. 浏览器访问 http://localhost:5920 + ### 源码安装 1. `go`语言版本1.7+ 2. `go get -d github.com/ouqiang/gocron` 3. 编译 * 调度器 `go build -tags gocron -o gocron` - * 任务执行器 `go build -tags node -o gocron-node` + * 任务节点 `go build -tags node -o gocron-node` 4. 启动、访问方式同上 ### 命令 @@ -66,8 +66,6 @@ * -e 指定运行环境, dev|test|prod, dev模式下可查看更多日志信息, 默认prod * -d 后台运行 * -h 查看帮助 -* gocron serv - * -s stop|status stop:停止gocron status:查看运行状态 * gocron-node ip:port, 默认0.0.0.0:5921 ## 程序使用的组件 diff --git a/scheduler.png b/scheduler.png index c614e76d4337e4beb20971734dfe55208989f3b7..2ed456a14dc73290c6e3061c2aad9e025201b49e 100644 GIT binary patch literal 14869 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

#ERX%8%QxB%rjTQxM@Xd_!o78*p>@mK6g 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 diff --git a/templates/common/header.html b/templates/common/header.html index a68c057..140bc53 100644 --- a/templates/common/header.html +++ b/templates/common/header.html @@ -61,12 +61,11 @@

diff --git a/templates/host/index.html b/templates/host/index.html index b96d6a0..030afbf 100644 --- a/templates/host/index.html +++ b/templates/host/index.html @@ -10,7 +10,7 @@
- 添加主机 + 添加节点
diff --git a/templates/host/menu.html b/templates/host/menu.html index e9f7c11..4973c54 100644 --- a/templates/host/menu.html +++ b/templates/host/menu.html @@ -2,7 +2,7 @@ diff --git a/templates/task/index.html b/templates/task/index.html index 8eb1a03..b15324b 100644 --- a/templates/task/index.html +++ b/templates/task/index.html @@ -24,7 +24,7 @@
- + {{{range $i, $v := .Hosts}}} {{{end}}} -   添加主机 +   添加节点