查找特定时间段cron任务方法

今天有个同学问:“如何查找特定时间段的cron调度任务?”, 这类问题通常是维护中经常遇到的,例如:

生产系统升级时,比如0点生产业务处理任务停止,到了5点0分恢复生产业务处理程序运行,那么在0点到5点前的调度任务就要人工运行了。

如果生产的cron调度任务有10个,一眼就能看完,如果有100个调度任务呢?这就要靠脚本来提取了。

先来说下cron配置规则:

# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of the month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12)
# │ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday;
# │ │ │ │ │                                   7 is also Sunday on some systems)
# │ │ │ │ │
# │ │ │ │ │
# * * * * * <command to execute>其中,每个字段格式:可以包含`逗号(,:表示离散点)`、`减号(-:表示时间段a-b)`。

知道配置规则后,接下来就开始是心啊查找cron调度任务区间 [s,e)的方法:

以下面几个调度为例:

0 0,10 * * * sh /path/to/job1.sh >/dev/null 2>&1
0 0-5 * * * sh /path/to/job2.sh >/dev/null 2>&1
0 1-2,5-10 * * * sh /path/to/job3.sh >/dev/null 2>&1
0 * * * * sh /path/to/job4.sh >/dev/null 2>&1
0 23 * * * sh /path/to/job5.sh >/dev/null 2>&1

如上几个调度示例,我们可以通过使用get_cron脚本正确的提取出:

$ get_cron 2
0 1-2,5-10 * * * sh /path/to/job3.sh >/dev/null 2>&1
0 * * * * sh /path/to/job4.sh >/dev/null 2>&1$ get_cron 2-11
0 0,10 * * * sh /path/to/job1.sh >/dev/null 2>&1
0 0-5 * * * sh /path/to/job2.sh >/dev/null 2>&1
0 1-2,5-10 * * * sh /path/to/job3.sh >/dev/null 2>&1
0 * * * * sh /path/to/job4.sh >/dev/null 2>&1

get_cron脚本源代码如下:

#!/usr/bin/env bash
########################################################################
# File Name: get_cron
# Author: 悟空的学习笔记
# Website: https://www.learnhard.cn
# Created Time: 2021年01月16日 星期六 17时21分01秒
########################################################################usage()
{cat <<END
usage:`basename $0` <start-hour> [end-hour]查找cron调度任务区间 [s,e)方法
END
}if [ "$#" -lt "1" ] ; thenusageexit 0
fis="$1"
e="$2"
if [ "$e" = "" ] ; thenlet e="$s+1"  # 取当前一小时内调度
fi# 查找调度区间 [s,e)
crontab -l | awk -v s=$s -v e=$e '!/^#|^$/{hours_field = $2# 每小时都执行if( hours_field !~/^[0-9]|*/)nextif (hours_field == "*") {print $0next}# 分离离散小时点n=split(hours_field ,hours_points , ",");for(i=1; i<=n;i++) {# 分离小时段m = split(hours_points[i] ,hours_line , "-");if(m <= 2) { # a-b or aa = hours_line[1]if( a >= s && a < e){##   ---s---a---b1---e---b2-->print $0;next}else if( m == 2){b = hours_line[2]##   --a--s----b---e--->if( b >= s && b < e) {print $0next}}}}
}'

了解更多Awk命令使用知识可以阅读Awk编程入门到精通,通过学习与实践,让你轻松掌握Awk编程方法。

cron表达式 每天0点10分和30分_查找特定时间段cron任务方法相关推荐

  1. cron表达式 每天0点10分和30分_“提前2小时下班”:学会这10个函数,办公效率提升了10倍!...

    ✎ 大家好,我是雅客. 今天给大家分享10个非常好用的函数,这几个函数都是我们精挑细选出来的,掌握这些函数,可以帮你提升10倍的工作效率,从此下班提前2个小时不是梦想! 01 VLOOKUP函数 根据 ...

  2. cron表达式 每天0点10分和30分_揭开考研阅卷的内幕,注意这些多得20分!

    戳上方"云逸未来"↑星标/置顶哦  六大工作组审核流程  考研统考科目实行集中统一阅卷.自命题科目试卷一般由报考院校专业导师命题,也由该院校相关院系老师阅卷:统考科目阅卷工作一般是 ...

  3. 3分和30分文章差距在哪里?

    好的分析和可视化,可以提供大量的信息,同时兼顾简洁优雅. 今天我们抛开实验设计.方法和工作量等因素,仅从文章最吸引人的图片来讨论3分和30分(顶级)文章差距在哪里? 以2017年8月25日发表在Sci ...

  4. 微生物组:3分和30分文章差距在哪里?

    好的分析和可视化,可以提供大量的信息,同时兼顾简洁优雅. 今天我们抛开实验设计.方法和工作量等因素,仅从文章最吸引人的图片来讨论3分和30分(顶级)文章差距在哪里? 以2017年8月25日发表在Sci ...

  5. cron表达式生成函数(小时部分自定义) 1小时30分钟,1小时20分钟,1小时40分钟..

    cron表达式实例: 每1小时30分钟执行一次(间隔时间90分钟) 使用两条cron表达式实现每90分钟执行一次. 第一条以01:30为起点,执行周期为3小时. 第二条以00:00为起点,执行周期为3 ...

  6. 计算H时M分S秒以后是_暖通设计|地暖循环水泵选型方法和计算

    循环水泵选型方法 循环水泵选型的一般方法是根据水力计算的结果,得出地暖系统所需的水流量和克服地暖系统管网及壁挂炉本身阻力所需的扬程,综合考虑循环水泵在地暖系统中的工作效率,选择合适的循环水泵. 1.1 ...

  7. 10年老电脑如何提速_告别求人!3个方法教你怎样让你的电脑快的嗖嗖的!

    在大学,我们的大学生能够解决大学的很多疑难杂症,比如撩妹子.撩汉子,怎样让人变得有动力等等,但是"电脑卡"这种非常有技术的问题你能解决吗? 别急,我请教了身边的电脑大神,给大家解决 ...

  8. 作业调度框架 Quartz 学习笔记(三) -- Cron表达式

    2019独角兽企业重金招聘Python工程师标准>>> 前面两篇说的是简单的触发器(SimpleTrigger) , SimpleTrigger 只能处理简单的事件出发,如果想灵活的 ...

  9. spring cron表达式及解析过程

    1.cron表达式 cron表达式是用来配置spring定时任务执行时间的字符串,由5个空格分隔成的6个域构成,格式如下: {秒}  {分}  {时}  {日}  {月}  {周} 每一个域的含义解释 ...

最新文章

  1. C++文件读写——字符串分割
  2. c#加粗代码_RichTextBox,怎么用c#代码根据Index和Length指定的范围的内容进行变色或加粗处理?...
  3. windows10系统右键新建菜单的自定义
  4. ArcMAp10.2生成栅格数据时报错
  5. 正定矩阵和半正定矩阵
  6. linux weblogic 安装报错,安装weblogic linux
  7. GIS数据恢复(ArcMap)地理数据库误删
  8. java实现http/https请求
  9. 齐齐哈尔大学计算机专业好么,齐齐哈尔大学(专业学位)计算机技术考研难吗
  10. Linux和Windows的区别
  11. 中国人工智能学会通讯——搜狗搜索:从搜索到问答 1.2 搜狗汪仔——具备问答能力的机器人...
  12. 硬货专栏 |深入浅出 WebRTC AEC(声学回声消除)
  13. 一种应用于档案馆档案库房的三维可视化温湿度监控系统平台
  14. 如何设置计算机的网络参数,如何为计算机新手简单地设置路由器的基本参数
  15. python图像处理:全景图片转鱼眼图片(鱼眼矫正)
  16. JDK(1.6,1.7,1.8,10,11)64位解压版配置使用
  17. 【linux基础】07、用户管理
  18. Arduino + ESP32-C3 + TFT(1.8‘ ST7735S)基础平台(实验二)玩具示波器
  19. 【React】1138- React Hooks 性能优化的正确姿势
  20. matlab求球心坐标,已知四顶点坐标求四面体外接球球心坐标

热门文章

  1. @EqualsAndHashCode
  2. Oralce 日期操作
  3. SourceTree超前一个版本,落后N个版本
  4. CentOS 7.4 ifconfig, ip/ss, nmcli, nmtui, 配置文件 修改ip信息用法
  5. 2.12linux csf 防火墙 防止少量的ddos cc攻击
  6. 修改mysql编码方式
  7. DEL: Open explorer from Console
  8. VC限制只能输入常规数字的CEdit控件
  9. 简单工厂模式:Simple Factory Pattern(转自阿良.NET)
  10. IterableThread