Golang cron 定时任务使用
1、cron 表达式的基本格式
| 字段名 | 是否必须 | 允许的值 | 允许的特定字符 |
| 秒(Seconds) | 是 | 0-59 | * / , - |
| 分(Minutes) | 是 | 0-59 | * / , - |
| 时(Hours) | 是 | 0-23 | * / , - |
| 日(Day of month) | 是 | 1-31 | * / , – ? |
| 月(Month) | 是 | 1-12 or JAN-DEC | * / , - |
| 星期(Day of week) | 否 | 0-6 or SUM-SAT | * / , – ? |
注:
1)月(Month)和星期(Day of week)字段的值不区分大小写,如:SUN、Sun 和 sun 是一样的。
2)星期 (Day of week)字段如果没提供,相当于是 *
2、特殊字符说明
)星号(*)
表示 cron 表达式能匹配该字段的所有值。如在第5个字段使用星号(month),表示每个月 )斜线(/)
表示增长间隔,如第1个字段(minutes) 值是 -/,表示每小时的第3分钟开始执行一次,之后每隔 分钟执行一次(即 、、、 这些时间点执行),这里也可以表示为:/ )逗号(,)
用于枚举值,如第6个字段值是 MON,WED,FRI,表示 星期一、三、五 执行 )连字号(-)
表示一个范围,如第3个字段的值为 - 表示 9am 到 5pm 直接每个小时(包括9和17) )问号(?)
只用于日(Day of month)和星期(Day of week),\表示不指定值,可以用于代替 *
3、cron举例说明
每隔5秒执行一次:*/5 * * * * ?
每隔1分钟执行一次:0 */1 * * * ?
每天23点执行一次:0 0 23 * * ?
每天凌晨1点执行一次:0 0 1 * * ?
每月1号凌晨1点执行一次:0 0 1 1 * ?
在26分、29分、33分执行一次:0 26,29,33 * * * ?
每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?
4、示例
- 最简单crontab任务
package main import (
"github.com/robfig/cron"
"log"
) func main() {
i :=
c := cron.New()
spec := "*/5 * * * * ?"
c.AddFunc(spec, func() {
i++
log.Println("cron running:", i)
})
c.Start() select{}
}
启动后输出如下:
cron running :
cron running :
cron running :
cron running :
cron running :
...
- 多个定时crontab任务
package main import (
"github.com/robfig/cron"
"log"
"fmt"
) type TestJob struct {
} func (this TestJob)Run() {
fmt.Println("testJob1...")
} type Test2Job struct {
} func (this Test2Job)Run() {
fmt.Println("testJob2...")
} //启动多个任务
func main() {
i :=
c := cron.New() //AddFunc
spec := "*/5 * * * * ?"
c.AddFunc(spec, func() {
i++
log.Println("cron running:", i)
}) //AddJob方法
c.AddJob(spec, TestJob{})
c.AddJob(spec, Test2Job{}) //启动计划任务
c.Start() //关闭着计划任务, 但是不能关闭已经在执行中的任务.
defer c.Stop() select{}
}
go run crontab/crontab-.go
启动后输出如下:
testJob1...
// :: cron running:
testJob2...
// :: cron running:
testJob1...
testJob2...
// :: cron running:
testJob1...
testJob2...
// :: cron running:
testJob1...
testJob2...
testJob2...
testJob1...
// :: cron running:
...
Golang cron 定时任务使用的更多相关文章
- Golang——Cron 定时任务
开门见山写一个 package main import ( "fmt" "github.com/robfig/cron" "log" &qu ...
- golang的定时任务
golang的定时任务使用的是cron这个包来解决的 官方文档地址:https://godoc.org/github.com/robfig/cron cron包的基础知识 字段名 是否必须 允许的值 ...
- Go cron定时任务的用法
cron是什么 cron的意思就是:计划任务,说白了就是定时任务.我和系统约个时间,你在几点几分几秒或者每隔几分钟跑一个任务(job),就那么简单. cron表达式 cron表达式是一个好东西,这个东 ...
- 使用 cron 定时任务实现 war 自动化发布
autoRelease.sh #!/bin/sh /home/tomcat/bin/shutdown.sh echo "tomcat stoped" cd /home/tomcat ...
- cron定时任务介绍
什么是cron? Cron是linux系统中用来定期执行或指定程序任务的一种服务或软件.与它相关的有两个工具:crond 和 crontab.crond 就是 cron 在系统内的宿主程序,cront ...
- linux ,cron定时任务 备份mysql数据库
cron 定时任务执行备份脚本文件 backup.sh #!/bin/bash USER="root" PASSWORD="xxxxx" DATABASE=&q ...
- 珠峰培训node 珠峰爬虫| cron 定时任务
1.cron 定时任务 CronJob var CronJob = require('cron').CronJob; // 秒 分钟 时 天
- Cron定时任务应用到Thinkphp – 贤生博客
Cron定时任务应用到Thinkphp 安装crontab: yum install crontabs 关于cron的一些命令: /sbin/service crond start //启动服务 /s ...
- linux下的cron定时任务知识梳理
1 cron定时任务 1.1 cron介绍 为什么需要cron定时任务? 1)cron服务在安装完Linux系统后就默认就存在,主要用来定期执行命令或定期执行指定的应用程序; 2)cron服务默认情况 ...
随机推荐
- GridView1 RowDataBound
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == ...
- CryptoJS与C#AES加解密互转
CryptoJS下载地址: https://code.google.com/archive/p/crypto-js/downloads http://download.csdn.net/detail/ ...
- TCP实现一个简易的聊天室 (Unity&&C#完成)
效果展示 TCP Transmission Control Protocol 传输控制协议 TCP是面向连接的流模式(俗称:网络流).即传输数据之前源端和终端建立可靠的连接,保证数据传输的正确性. 流 ...
- C#通过盘符获取剩余空间
public static long GetHardDiskSpace(string str_HardDiskName) { ; str_HardDiskName = str_HardDiskName ...
- 使用node_redis进行redis数据库crud操作
正在学习使用pomelo开发游戏服务器,碰到node.js操作redis,记录一下 假设应用场景是操作一个用户表的数据 引入node_redis库,创建客户端 var redis = require( ...
- 902. Numbers At Most N Given Digit Set
We have a sorted set of digits D, a non-empty subset of {'1','2','3','4','5','6','7','8','9'}. (Not ...
- 如何实现session跨服务器共享
Session共享有多种解决方法,常用的有四种:客户端Cookie保存.服务器间Session同步.使用集群管理Session.把Session持久化到数据库. 1.客户端Cookie保存 以cook ...
- 为什么有监听socket和连接socket,为什么产生两个socket
为什么有监听socket和连接socket,为什么产生两个socket 先看一半的socket建立连接的双方的过程: 客户端: socket()---->创建出 active_socket_fd ...
- Python小白学习之路(十)—【函数】【函数返回值】【函数参数】
写在前面: 昨天早睡之后,感觉今天已经恢复了百分之八十的样子 又是活力满满的小伙郭 今日份鸡汤: 我始终相信,在这个世界上,一定有另一个自己,在做着我不敢做的事,在过着我想过的生活.-------宫崎 ...
- linux,软链接配置node,npm全局命令
sudo ln -s /usr/local/bin/node /bin/node sudo ln -s /usr/local/bin/npm /bin/npm 这样配置后,在root下和别的 ...