1、cron(计划任务)

按照约定的时间,定时的执行特定的任务(job)。

cron 表达式 表达了这种约定。 cron 表达式代表了一个时间集合,使用 6 个空格分隔的字段表示。

秒 分 时 日 月 星期

2、Linux的cron与Go的cron区别

linux 中的 cron 只能精确到分钟,而Go 实现的 cron 可以精确到秒。

3、特殊字符说明

1)星号(*)
表示 cron 表达式能匹配该字段的所有值。如在第5个字段使用星号(month),表示每个月2)斜线(/)
表示增长间隔,如第1个字段(minutes) 值是 3-59/15,表示每小时的第3分钟开始执行一次,之后每隔 15 分钟执行一次(即 3、18、33、48 这些时间点执行),这里也可以表示为:3/153)逗号(,)
用于枚举值,如第6个字段值是 MON,WED,FRI,表示 星期一、三、五 执行4)连字号(-)
表示一个范围,如第3个字段的值为 9-17 表示 9am 到 5pm 直接每个小时(包括9和17)5)问号(?)
只用于日(Day of month)和星期(Day of week),\表示不指定值,可以用于代替 *

4、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 * * ?

5、示例代码

 1 package main
 2
 3 import (
 4     "github.com/robfig/cron"
 5     "log"
 6 )
 7
 8 func main() {
 9     i := 0
10     c := cron.New()
11     spec := "*/5 * * * * ?"
12     c.AddFunc(spec, func() {
13         i++
14         log.Println("cron running:", i)
15     })
16     c.Start()
17
18     select{}
19 }

最简单crontab任务

启动后输出如下:

cron running : 1
cron running : 2
cron running : 3
cron running : 4
cron running : 5
...

 1 package main
 2
 3 import (
 4     "github.com/robfig/cron"
 5     "log"
 6     "fmt"
 7 )
 8
 9 type TestJob struct {
10 }
11
12 func (this TestJob)Run() {
13     fmt.Println("testJob1...")
14 }
15
16 type Test2Job struct {
17 }
18
19 func (this Test2Job)Run() {
20     fmt.Println("testJob2...")
21 }
22
23 //启动多个任务
24 func main() {
25     i := 0
26     c := cron.New()
27
28     //AddFunc
29     spec := "*/5 * * * * ?"
30     c.AddFunc(spec, func() {
31         i++
32         log.Println("cron running:", i)
33     })
34
35     //AddJob方法
36     c.AddJob(spec, TestJob{})
37     c.AddJob(spec, Test2Job{})
38
39     //启动计划任务
40     c.Start()
41
42     //关闭着计划任务, 但是不能关闭已经在执行中的任务.
43     defer c.Stop()
44
45     select{}
46 }

多个定时crontab任务

启动后输出如下:

testJob1...
2017/07/07 18:46:40 cron running: 1
testJob2...
2017/07/07 18:46:45 cron running: 2
testJob1...
testJob2...
2017/07/07 18:46:50 cron running: 3
testJob1...
testJob2...
2017/07/07 18:46:55 cron running: 4
testJob1...
testJob2...
testJob2...
testJob1...
2017/07/07 18:47:00 cron running: 5
...

转载于:https://www.cnblogs.com/Paul-watermelon/p/11135188.html

Go-cron定时任务相关推荐

  1. cron定时任务和No MTA installed, discarding output错误处理

    陈拓 2021/09/09-2020/09/12 0. 我的系统 lsb_release -a 1. 设置cron 为了定时执行程序启用cron. 我的项目需求为每5分钟执行一次hkCapJpeg1. ...

  2. @Scheduled cron 定时任务表达式含义用法及* ?的区别

    ** @Scheduled cron 定时任务表达式含义用法及* ?的区别 ** cron格式:[秒数][分钟][小时][日期][月份][星期几][年份(可省略)] 关于[日期]与[星期几]的说明: ...

  3. 继续转 [转]php版本的cron定时任务执行器

    由于服务器crontab只能精确到分钟,那程序的起点也是分钟. 一共包括但部分: 一.配置文件: 配置文件是用来返回要执行的定时任务文件,注意一下*的使用就行了,有两个模式,就是 Y-m-d H:i ...

  4. window下配置定时任务实现类似linux的cron定时任务

    2019独角兽企业重金招聘Python工程师标准>>> 需求分析: 由于在window本地我已经塔建好爬中代码,不想上传到服务器直接在本地一直爬取就好,所以需要在window下新建定 ...

  5. ubuntu cron 定时任务

    1.如何查看Ubuntu 的 crontab的执行日志: 执行sudo vim /etc/rsyslog.d/50-default.conf 将cron.* /var/log/cron.log 中cr ...

  6. cron定时任务详解

    crond是什么? crond 和crontab是不可分割的.crontab是一个命令,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于 ...

  7. linux内置的cron定时任务

    linux内置的cron进程能帮我们实现这些需求,cron搭配shell脚本,非常复杂的指令也没有问题. cron介绍 我们经常使用的是crontab命令是cron table的简写,它是cron的配 ...

  8. Go Gin 系列十一:Cron定时任务

    知识点 完成定时任务的功能 本文目标 在实际的应用项目中,定时任务的使用是很常见的.你是否有过 Golang 如何做定时任务的疑问,莫非是轮询,在本文中我们将结合我们的项目讲述 Cron. 介绍 我们 ...

  9. Linux服务器定时清理日志文件、Linux cron定时任务

    文章目录 1. 准备工作 2. 脚本实现 2.1 执行命令准备 2.2.Linux 下创建定时任务-crontab 2.2.1.crontab 常用命令 2.2.2 命令行操作 3.附甜点 cron校 ...

  10. Go——cron定时任务Demo

    源代码:https://gitee.com/shentuzhigang/mini-project/blob/master/cron_demo 官方文档 https://pkg.go.dev/githu ...

最新文章

  1. nginx代理响应报文体不全解决思路
  2. 探秘新一代音视频技术融合通信平台全接触
  3. 怎样做网络推广浅谈如何更高效的提升关键词排名?你还不知道?
  4. 图解Java 开发教程
  5. 【转】jQuery.ajax向后台传递数组问题
  6. hive外部表改为内部表_hive内部表外部表介绍
  7. 获取当前程序运行的主机名称
  8. [转]pycharm的一些快捷键
  9. parseInt 的使用方式,基数表达
  10. 未找到具有固定名称“System.Data.SqlClient”的 ADO.NET 提供程序的实体框架 解决方案...
  11. python manage.py startapp app 时候报错No module named _sqlite3
  12. [ 逻辑锻炼] 用 JavaScript 做一个小游戏 ——2048 (详解版)
  13. python开发游戏脚本_Python开发游戏开服脚本
  14. ernie和Bert的参数理解
  15. H3CSE园区-Smart Link和Monitor Link
  16. 微信公众号小程序与服务号和订阅号有什么区别
  17. java和数据库时间类型
  18. 游戏挂机还开着电脑?那就真的out了!
  19. 用jk触发器构成二分频电路_JK触发器地应用设计.ppt
  20. 34. 在排序数组中查找元素的第一个和最后一个位置

热门文章

  1. 单链表的应用 就地逆置
  2. html5+css3第一次作业_“台风爷爷,让我作业飞走!”南京小学生写的诗都这么逆天了?...
  3. JS面向对象——class定义类、类的构造函数、实例方法、访问器方法、静态方法、继承、super、多态
  4. Vue项目开发过程中解决跨域问题(vue.config.js结合axios)
  5. express项目搭建 初始化详细步骤
  6. Nodejs 中的包、npm 、第三方模块、 package.json 以及 cnpm
  7. Java 给编译器看的注释--Annotation
  8. 【Kaggle】Intermediate Machine Learning(XGBoost + Data Leakage)
  9. LeetCode 1310. 子数组异或查询(前缀异或)
  10. Ubuntu 扩展内存或断电之后卡在 /dev/sda1 clean 和 /dev/sda1 recovering journal