>好雨云应用的计划任务功能目前处于beta阶段,完全兼容crontab的计划任务格式。本文介绍的内容可能在以后的产品升级中废除或改进,但已经部署的计划任务应用不会受到影响。
### **实现原理**
好雨云的计划任务应用和传统的Linux计划任务实现是一致的,同样使用 crontab 格式的文件,配合cron程序来执行特定的任务。同样与代码部署的逻辑一致,只需要将crontab 格式的计划任务文件放在代码跟目录即可。
![](https://box.kancloud.cn/2016-07-22_5791ce5daf80d.png)
### **配置crontab格式的文件**
#### **计划任务格式**
~~~
# 每三分钟在标准输出打印hello world
*/3 * * * * echo "hello world" >> /data/cron.log 2>&1
~~~
>#### **注意**
>cron的标准输出不会直接输出,因此这里将计划任务的输出重定向到日志文件中,后续通过Procfile可以将日志送到标准输出。
**格式解释**
| 代表含义 | 分钟 | 小时 | 日期 | 月份 |周 | 命令 |
| -- | -- | -- | -- | -- | -- | -- |
| 数字范围 | 0-59 | 0-23 | 1-31 | 1-12 |0-7 | 运行命令 |
咱们看一下第五个星号,它代表的是星期几,这里需要注意一下,0和7都代表的是星期日,另外还有一些辅助的字符如下:
| 特殊字符 | 代表含义 |
| -- | -- |
| *(星号) | 代表任何时刻都接受的意思!举例来说 1 command 意思是说无论哪年哪月哪日每个小时的第一分钟执行这个命令 |
| ,(逗号) | 代表分隔時段的意思。如下例子,如果要在3点和6点执行命令:0 3,6 * command时间参数是五列,第二列的3,6代表3点和6点 |
| -(减号) | 代表一段時間范围内,如 8 点到 12 点之间的每小时的 20 分都运行一次命令:20 8-12 * command第二列变成了 8-12 !代表 8,9,10,11,12 都适用的意思 |
| /n(斜杠) | 那个 n 代表数字,亦即是『每隔 n 单位间隔』的意思,例如每五分钟执行一次,则:/5 command用 与 /5 來搭配,也可以写成 0-59/5 ,意思一样 |
### **计划任务配置**
#### **代码结构**
# 代码结构
├── cron.txt
├── index.html
└── Procfile
# cron.txt 文件内容
*/3 * * * * echo "hello world!" >> /data/cron.log 2>&1
# Procfile文件内容
web: crontab www/cron.txt && cron && touch /data/app.log && tail -f /data/app.log
>#### **注意**
>* 目前好雨云没有针对计划任务分离单独的应用类型,因此需要用户针对自己的需求将计划任务定义一个语言类型。如果您只需要执行一些shell脚本,可以直接在代码中添加index.html让平台认为是一个html代码,从而可以让平台识别代码并构建环境。如果是其它语言,请按照相应的语言监测规则匹配即可。
>* Procfile中不运行web server,则应用的访问 按钮指向的连接无效。
>针对不同的语言示例会在本文下面的demo中给出链接地址
### **Procfile 文件解释**
计划任务的Procfile文件分三部分:
* web 应用类型 平台目前仍然使用web类型最为计划任务应用,后续会变更。
* crontab cron.txt 利用crontab 命令将cron.txt 这个计划任务加载到计划任务列表中。
* cron -f 使用前台的形式 运行 cron 服务
### **Cron 示例代码**
* [php环境的计划任务](http://code.goodrain.com/demo/cron-php/tree/master)
>这个demo做了2件事:
>1. 配置一个计划任务,每3分钟往 /tmp/test.txt 文件中写入时间
>2. 配置了一个php环境且运行了一个web server 可以看到/tmp/test.txt 的内容
* [cron并显示日志输出](http://code.goodrain.com/demo/cron-shell/tree/master)
- 介绍
- 从这里开始
- 注册
- 登陆
- 云帮界面
- 功能介绍
- 新增应用
- 从镜像
- 从源码
- 应用市场
- 应用框架
- 我的应用
- 界面介绍
- 应用控制台
- 概览
- 依赖
- 监控
- 日志
- 设置
- 费用
- 端口
- 存储
- 扩容
- 总览
- 团队
- 财务中心
- 帐户充值
- 应用扣费
- 批量续费
- 语言支持
- 概述
- Java
- java-maven
- java-war
- java-jar
- web程序部署
- 使用Webapp Runner部署
- 使用Jetty Runner部署
- 示例代码
- gradle
- Scala
- play
- Ruby
- 语言支持
- ruby应用部署
- Rails 应用概述
- 部署Rails3.x应用
- 使用Puma 部署 Rails 应用
- 示例代码
- Python
- 语言支持
- Web框架支持
- 示例代码
- PHP
- 平台特性
- 语言支持
- 运行环境设置与调优
- 部署ThinkPHP框架程序
- 示例代码
- Go
- 语言支持
- 部署Beego等框架程序
- 示例代码
- Node.JS
- 语言支持
- 示例代码
- Html
- 语言支持
- 示例代码
- Dockerfile
- 语言支持
- 示例代码
- 相关文档
- Procfile
- Cron计划任务
- 参考知识
- 好雨Gogs使用说明
- Artifactory对接本地仓库
- 好雨如何对接Git Server
- Git使用技巧
- 服务框架支持
- dubbo
- springcloud
- 技术支持