一  cron表达式定义

Cron表达式是一个具有时间含义的字符串,字符串以5个空格隔开,分为6个域,格式为X X X X X X。其中X是一个域的占位符。单个域有多个取值时,使用半角逗号,隔开取值。每个域可以是确定的取值,也可以是具有逻辑意义的特殊字符。

域取值

下表为Cron表达式中六个域能够取的值以及支持的特殊字符。

是否必需 取值范围 特殊字符
[0, 59] * , - /
分钟 [0, 59] * , - /
小时 [0, 23] * , - /
日期 [1, 31] * , - / ? L W
月份 [1, 12]或[JAN, DEC] * , - /
星期 [1, 7]或[MON, SUN]。若您使用[1, 7]表达方式,1代表星期一,7代表星期日。 * , - / ? L #

特殊字符

Cron表达式中的每个域都支持一定数量的特殊字符,每个特殊字符有其特殊含义。

特殊字符 含义 示例
* 所有可能的值。 在月域中,*表示每个月;在星期域中,*表示星期的每一天。
, 列出枚举值。 在分钟域中,5,20表示分别在5分钟和20分钟触发一次。
- 范围。 在分钟域中,5-20表示从5分钟到20分钟之间每隔一分钟触发一次。
/ 指定数值的增量。 在分钟域中,0/15表示从第0分钟开始,每15分钟。在分钟域中3/20表示从第3分钟开始,每20分钟。
? 不指定值,仅日期和星期域支持该字符。 当日期或星期域其中之一被指定了值以后,为了避免冲突,需要将另一个域的值设为?
L 单词Last的首字母,表示最后一天,仅日期和星期域支持该字符。

说明 指定L字符时,避免指定列表或者范围,否则,会导致逻辑问题。

  • 在日期域中,L表示某个月的最后一天。在星期域中,L表示一个星期的最后一天,也就是星期日(SUN)。
  • 如果在L前有具体的内容,例如,在星期域中的6L表示这个月的最后一个星期六。
W 除周末以外的有效工作日,在离指定日期的最近的有效工作日触发事件。W字符寻找最近有效工作日时不会跨过当前月份,连用字符LW时表示为指定月份的最后一个工作日。 在日期域中5W,如果5日是星期六,则将在最近的工作日星期五,即4日触发。如果5日是星期天,则将在最近的工作日星期一,即6日触发;如果5日在星期一到星期五中的一天,则就在5日触发。
# 确定每个月第几个星期几,仅星期域支持该字符。 在星期域中,4#2表示某月的第二个星期四。

取值示例

以下为Cron表达式的取值示例。

示例 说明
0 15 10 ? * * 每天上午10:15执行任务
0 15 10 * * ? 每天上午10:15执行任务
0 0 12 * * ? 每天中午12:00执行任务
0 0 10,14,16 * * ? 每天上午10:00点、下午14:00以及下午16:00执行任务
0 0/30 9-17 * * ? 每天上午09:00到下午17:00时间段内每隔半小时执行任务
0 * 14 * * ? 每天下午14:00到下午14:59时间段内每隔1分钟执行任务
0 0-5 14 * * ? 每天下午14:00到下午14:05时间段内每隔1分钟执行任务
0 0/5 14 * * ? 每天下午14:00到下午14:55时间段内每隔5分钟执行任务
0 0/5 14,18 * * ? 每天下午14:00到下午14:55、下午18:00到下午18:55时间段内每隔5分钟执行任务
0 0 12 ? * WED 每个星期三中午12:00执行任务
0 15 10 15 * ? 每月15日上午10:15执行任务
0 15 10 L * ? 每月最后一日上午10:15执行任务
0 15 10 ? * 6L 每月最后一个星期六上午10:15执行任务
0 15 10 ? * 6#3 每月第三个星期六上午10:15执行任务
0 10,44 14 ? 3 WED 每年3月的每个星期三下午14:10和14:44执行任务

二  应用场景

1 Java项目中所有的定时任务,规定定时的时候用到都是cron表达式,这个表达式的配置一般有两种方式

1 配置在数据库中,此时需要修改这个任务的时候,找到对应的数据库记录,直接修改为想定时的cron表达式即可,这种应该是很少很少,

2 在java项目的配置文件中,配置文件一般在服务器或者对应的部署软件上,此时需要找到对应位置,修改为想定时的cron表达式,修改完配置需要登录服务器重启项目,或者部署服务器重新部署项目。

2 linux定时执行脚本

Linux crontab是用来定期执行程序的命令。

当安装完成操作系统之后,默认便会启动此任务调度命令。

crond 命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

语法:

crontab [ -u user ] { -l | -r | -e }

说明:

crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。

-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。

参数说明

  • -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
  • -r : 删除目前的时程表
  • -l : 列出目前的时程表

例:

修改定时任务的时间为:

1 crontab -e

2 键入i 进去编辑状态

3 修改cron表达式

4 按esc结束标记状态

5 键入:wq!  回车进行保存

6 crontab -l 查看一下定时任务时间是否正确修改即可。

定时任务之cron表达式相关推荐

  1. 9点到17点半 cron_SpringQuartz定时任务的cron表达式书写

    SpringQuartz定时任务的使用,要配置这个定时任务什么时候执行,周期是多少,周期内执行多少次,这个都是cron表达式来控制的,下面详解一下这个cron表达式. 一.先来举些例子 [1]0 0 ...

  2. 弹性伸缩定时任务支持Cron表达式 1

    定时任务支持的Cron表达式介绍 支持5域的Cron表达式,包括分.时.日.月.星期. 域 取值 可使用字符 分钟 0-59 , - / * 小时 0-23  , - / * 日期 1-31,一般认为 ...

  3. Spring定时任务常用Cron表达式

    我们在做springboot项目时候,经常会用到定时任务,而用到定时任务就一定会涉及到Cron表达式的书写 一.Cron表达式是什么? Cron:计划任务,是任务在约定的时间执行已经计划好的工作,而C ...

  4. springboot 定时任务@Scheduled cron表达式、fixedRate、fixedDelay、initialDelay和@EnableAsync、@Async的结合使用

    定时任务几种形式 1,cron自定义表达式 @Scheduled(cron = "${statistics.ams.day-cron}")private void test() { ...

  5. Spring定时任务(Cron表达式)

    定时任务 在线Cron表达式生成器: https://cron.qqe2.com/ 一.SpringBoot自带的定时任务 解决:使用异步任务 + 定时任务来完成定时任务不阻塞的功能 定时任务 1.@ ...

  6. Elastic Job Lite调度中心和Cron表达式

    1.Elastic Job Lite 调度中心 Elastic-Job-Lite 2.Cron表达式 cron表达式格式: {Seconds} {Minutes} {Hours} {DayofMont ...

  7. Spring 定时任务之 @Scheduled cron表达式

    首先在配置文件头部的必须要有: xmlns:task="http://www.springframework.org/schema/task" 1 其次xsi:schemaLoca ...

  8. 定时任务 ||​​​​​​​​​​​​​​ Cron表达式

    Spring内置的Spring Task,这是Spring3.0加入的定时任务功能. 使用注解的方式定时启动爬虫进行数据爬取. 我们使用的是@Scheduled注解,其属性如下: 1)cron:cro ...

  9. Spring Boot定时任务-cron表达式

    其实cron表达式呢,其实就是一个基于字符串的,基于时间的一个定义格式,那我们就来看一下cron表达式语法的定义,cron表达式它是一个字符串的,并且在字符串当中呢,包含6个域或者7个域,然后每个域表 ...

  10. springboot配置定时任务及常用的cron表达式

    springboot引入定时任务 springboot引入定时任务主要需要以下几步: 1.引入相关的依赖 2.配置程序开启定时任务 3. 编写定时任务 引入相关的依赖 只用引一个基础的web的依赖就可 ...

最新文章

  1. axure7.0元件库 安卓_AxureRP 7.0 元件库下载
  2. Java:XML篇,使用SAX写入XML数据
  3. BOOST_PREDEF_WORKAROUND宏相关的测试程序
  4. 跟风学Docker之四:Docker网络解决方案
  5. 什么是JavaScript中的回调函数?
  6. java压缩传输gzip_服务器使用Gzip压缩数据,加快网络传输(Java 例子)
  7. (转)Top Ten Web Hacking Techniques of 2011
  8. PyTorch中文教程 | (10) 对抗性示例生成
  9. Python实现千图成像:从图片爬取到图片合成
  10. 如何管理计算机的字体,请同事吃了顿饭才要来的字体管理神器,电脑里的几百个字体有救了!...
  11. bootstrap动态折叠菜单,按钮拉伸,菜单动态获取数据
  12. 如何复制CD音乐(电脑小技巧)
  13. 点到点轨迹规划——三次曲线,五次曲线,梯形曲线,S曲线
  14. 计算机网路——163邮箱授权码
  15. s4 android4.4.2,三星Galaxy S4(GT-I9500)开始Android 4.4.2升级
  16. public class A implements B{} --java
  17. idea出现 淇℃伅 乱码
  18. Tree树状图的动态增删查改(上)生成树状图
  19. SR-GNN论文解读并附代码分析
  20. 达梦数据库disql工具使用

热门文章

  1. CS1.5制造机器人的命令
  2. 使用csc命令手动编译cs文件
  3. miui10,miui11,miui12 rom下载,支持市面常见机型
  4. rfid水洗电子标签怎么管理洗涤衣物
  5. 国军标 软件测评 静态分析常见问题总结
  6. 走向Java架构师之路:成为架构师要掌握的8大能力
  7. python如何调用dll库中的函数_Python调用DLL动态库函数读写CPU卡
  8. QTP11.0安装步骤及需要注意事项
  9. listbox tkinter 多选_TKINTER教程之LISTBOX篇
  10. 笔记本指纹识别linux版驱动程序,联想Thinkpad指纹识别驱动