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服务默认情况 ...
随机推荐
- DBCC--SQLPERF
提供所有数据库的事务日志空间使用情况统计信息.也可以用于重置等待和闩锁的统计信息. 语法: DBCC SQLPERF ( [ LOGSPACE ] | [ "sys.dm_os_latch ...
- ASP.NET在请求中检测到包含潜在危险的数据,因为它可能包括 HTML标记或脚本
背景:程序迁移到新的服务器上,在程序进行修改操作时,提示包含危险数据.然而在旧服务器上却没有问题,我猜想的可能是,新服务器IIS安装的ASP.NET版本框架高于以前的IIS上的版本框架,导致web.c ...
- .Net应用程序 参照的组合没有安装在您的系统中。 HRESULT: 0x800736B3
同事打开一个.Net的应用程序链接,一直无法启动.错误信息为: 啓用xx.application 時發生例外狀況. 已偵測到下列失敗訊息:參照的組合沒有安裝在您的系統中. (發生例外狀況於 HRESU ...
- Hello World! 我的程序员入坑之旅!
先说下本文标题,各行各业都有自己的行规和一些内行人玩的梗什么的,这是我开始写技术博客的第一篇,所以它的标题毫无疑问只能是Hello World! 介绍一下我自己 我算是一个少见的科班出身的开发者了,1 ...
- spring jdbc批量插入
http://blog.csdn.net/fyqcdbdx/article/details/7366439
- IOS 开发入门
1.Getting Started https://developer.apple.com/library/ios/navigation/#section=Resource%20Types&t ...
- Codeforces Round #439 (Div. 2) A B C
强哉qls,这场div2竟是其出的!!! A. The Artful Expedient 暴力 ^ ,判断是否出现,有大佬根据亦或的性质推出 Karen 必赢,太强啦23333333333333. # ...
- 转载:不定义JQuery插件,不要说会JQuery
转载:http://www.cnblogs.com/xcj26/p/3345556.html 一:导言 有些WEB开发者,会引用一个JQuery类库,然后在网页上写一写$("#") ...
- jsp文件和HTML互相引入的乱码问题
1.在jsp中用include指令引入HTML文件时遇到的问题: jsp.html都可以正确的显示,当jsp引入html时访问jsp页面HTML出现乱码,jsp原有的输出无乱码,解决方法: 在HTML ...
- eclispe中使用python库 pyswip 进行prolog编程
from pyswip import Prolog prolog = Prolog() prolog.assertz("father(michael,john)") prolog. ...