CRON基础学习
cron表达式,再编程做定时任务的时候,经常会用到,具有很强的通用性,很多定制化的工具,也是支持自定义表达式。可能是定时器写得少,或者没有主动去了解,所以很多时候知道有这个东西,但是没去认真看那一下,适逢工作中需要用到,决定认真看一下,这一下,瞬间感觉其实真的很简单(大多数时候使用),果然还是要有一颗学习的心,不能老是百度,这里的百度指的是直接去搜答案。不过也有可能初入这个行业,当时确实看得头皮发麻,现在很多东西就了解了,自然觉得简单了, 所以初入计算机行业也可以后面再看,估计一下子就会了。
ok,学习cron一共只需要学习一张表,只要看懂了这张表,真的就很简单了,虽然看起来很多,实际需要记的内容很少。
字段名 |
字段解释 |
值范围 |
特殊字符 |
Seconds |
秒 |
0~59 |
, - * / |
Minutes |
分 |
0~59 |
, - * / |
Hours |
小时 |
0~23 |
, - * / |
Day-of-Month |
天 |
1~31 |
, - * ? / L W C |
Month |
月 |
0~11或JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV,DEC |
, - * / |
Day-of-Week |
周 |
1~7,1=SUN 或者"SUN, MON, TUE, WED, THU, FRI, SAT” |
, - * ? / L C # |
Year (可选) |
年 |
empty或1970~2099 |
, - * / |
举例: 1 * * * * ? *: 从左到右,依次表示是从秒到年。 表示每分钟的第一秒执行。 最后一个* 表示年, 可以省略。 所以 常见的cron表达式 只有6个值
上述表基本就是所有的cron内容了,再稍加解释,基本就学完了,亏我以前觉得很难,果然还是态度不够
特殊字符解释:
- , -这两个不需要解释,就是具体的点 或者 范围。这个真不解释, 例如五点和六点 就5,6 五点到六点 5-6
- * 这个最常见, 简单理解就是0-24,表示无时无刻。 就是所有时刻都生效, 主要是配合其他具体值使用的。 例如你要每小时第五分钟执行, 则小时就应该 * ,表示每小时。 个人理解,这里需要注意的是,一般从小到大,也就是cron从左到右,一般有具体的时间点 左边都是具体时间 而右边是* 。 例如 1 1 * * * ?表示每小时第1分钟第一秒执行。 左边是具体值右边是*
- / 这个就更简单了,就表示从几点开始每隔多久,/前面表示 具体开始时间, 后面表示具体的间隔。 例如1/2 ,在时上,就表示, 一点开始,每隔两小时执行。其他同理
- ? 只能用在天月和天周上,这个也是最开始让我感觉难的地方,简单理解就是放弃这个值的设置。 就是天月和天周容易冲突。 所以天月设置了值的时候,天周就? 一般天周用?比较多。
- L 最后 最后 2L在天月上表示,倒数第二日。 2L在天周上 表示 每个月最后一个周一。 === 不常用
- W 用在天月上,就是工作日,即周一到周五。5W,五号且是工作日, 如果五号不是工作日,则就近在当月范围内寻找工作日。 ===不常用
- # 用在天周上, 这个可以理解为补充。 因为天周的号数表达周几,无法表达第几周, 6#3表达每月第三个周五。#前表示周几 #后表示第几周 ===不常用
- C // todo这个不知道, 不过不重要,大多数用不上, 后续了解了我再补充上。
以上基本上就完了,看起来很多, 实际只需要关注 , - / ? 这几个特殊字符就够了,基本上大多数的时候就足够用了。
列举几个简单的题目吧,答案在后面
1.每个月18到20号的11点和17点
2.每天奇数小时整
3.每个月最后一天
就这些吧, 本来就是普通的入手。 大多数时候够用就行,答案 ↓↓↓
1.每个月18到20号的11点和17点
对于新手,再次强调一个概念: 从左到右依次是从秒到天周。 *一般只能出现在右边, ?一般在最后
解析:每个月18-20, 这里是范围 需要用到- 。 11点和17点,这里是两个具体时间,需要用到“,”。 需要注意11点和17点默认是有0分0秒的意思, 左边一般是具体的值,不存在*号。 因为指定了天月,所以天周使用?
答案:0 0 11,17 18-20 * ?
2.每天奇数小时整
解析:这个就需要翻译一下,大概意思就是每天的奇数时刻整执行,例如1点 3点。 所以这里就是用了每隔2小时的概念, 需要用到/ 。 起始时间就是1点,间隔是2小时
答案:0 0 1/3 * * ?
3.每个月最后一天
解析:最后就是L, L左边跟几就是最后第几天, 最后一天, 1L, 1省略
答案:0 0 0 L * ?
- 点赞
- 收藏
- 关注作者
评论(0)