定时任务之cron表达式
一 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的首字母,表示最后一天,仅日期和星期域支持该字符。
说明 指定 |
|
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表达式相关推荐
- 9点到17点半 cron_SpringQuartz定时任务的cron表达式书写
SpringQuartz定时任务的使用,要配置这个定时任务什么时候执行,周期是多少,周期内执行多少次,这个都是cron表达式来控制的,下面详解一下这个cron表达式. 一.先来举些例子 [1]0 0 ...
- 弹性伸缩定时任务支持Cron表达式 1
定时任务支持的Cron表达式介绍 支持5域的Cron表达式,包括分.时.日.月.星期. 域 取值 可使用字符 分钟 0-59 , - / * 小时 0-23 , - / * 日期 1-31,一般认为 ...
- Spring定时任务常用Cron表达式
我们在做springboot项目时候,经常会用到定时任务,而用到定时任务就一定会涉及到Cron表达式的书写 一.Cron表达式是什么? Cron:计划任务,是任务在约定的时间执行已经计划好的工作,而C ...
- springboot 定时任务@Scheduled cron表达式、fixedRate、fixedDelay、initialDelay和@EnableAsync、@Async的结合使用
定时任务几种形式 1,cron自定义表达式 @Scheduled(cron = "${statistics.ams.day-cron}")private void test() { ...
- Spring定时任务(Cron表达式)
定时任务 在线Cron表达式生成器: https://cron.qqe2.com/ 一.SpringBoot自带的定时任务 解决:使用异步任务 + 定时任务来完成定时任务不阻塞的功能 定时任务 1.@ ...
- Elastic Job Lite调度中心和Cron表达式
1.Elastic Job Lite 调度中心 Elastic-Job-Lite 2.Cron表达式 cron表达式格式: {Seconds} {Minutes} {Hours} {DayofMont ...
- Spring 定时任务之 @Scheduled cron表达式
首先在配置文件头部的必须要有: xmlns:task="http://www.springframework.org/schema/task" 1 其次xsi:schemaLoca ...
- 定时任务 || Cron表达式
Spring内置的Spring Task,这是Spring3.0加入的定时任务功能. 使用注解的方式定时启动爬虫进行数据爬取. 我们使用的是@Scheduled注解,其属性如下: 1)cron:cro ...
- Spring Boot定时任务-cron表达式
其实cron表达式呢,其实就是一个基于字符串的,基于时间的一个定义格式,那我们就来看一下cron表达式语法的定义,cron表达式它是一个字符串的,并且在字符串当中呢,包含6个域或者7个域,然后每个域表 ...
- springboot配置定时任务及常用的cron表达式
springboot引入定时任务 springboot引入定时任务主要需要以下几步: 1.引入相关的依赖 2.配置程序开启定时任务 3. 编写定时任务 引入相关的依赖 只用引一个基础的web的依赖就可 ...
最新文章
- axure7.0元件库 安卓_AxureRP 7.0 元件库下载
- Java:XML篇,使用SAX写入XML数据
- BOOST_PREDEF_WORKAROUND宏相关的测试程序
- 跟风学Docker之四:Docker网络解决方案
- 什么是JavaScript中的回调函数?
- java压缩传输gzip_服务器使用Gzip压缩数据,加快网络传输(Java 例子)
- (转)Top Ten Web Hacking Techniques of 2011
- PyTorch中文教程 | (10) 对抗性示例生成
- Python实现千图成像:从图片爬取到图片合成
- 如何管理计算机的字体,请同事吃了顿饭才要来的字体管理神器,电脑里的几百个字体有救了!...
- bootstrap动态折叠菜单,按钮拉伸,菜单动态获取数据
- 如何复制CD音乐(电脑小技巧)
- 点到点轨迹规划——三次曲线,五次曲线,梯形曲线,S曲线
- 计算机网路——163邮箱授权码
- s4 android4.4.2,三星Galaxy S4(GT-I9500)开始Android 4.4.2升级
- public class A implements B{} --java
- idea出现 淇℃伅 乱码
- Tree树状图的动态增删查改(上)生成树状图
- SR-GNN论文解读并附代码分析
- 达梦数据库disql工具使用