love2wind

 2021-12-22  /   📝技巧教程  /   465 人浏览  /   0 条评论  /   全文共1153字

定时任务中的Cron表达式详细说明

Cron表达式

在执行云助手命令时,您可以调用API通过Timed参数和Frequency参数设置命令的执行时间。Frequency的取值为一个Cron表达式,适用于周期性执行、日常维护、在某时刻需要完成的单次任务等场景。

Cron表达式介绍

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

* * * * * * *
秒   分   时   日   月    周   年
*    *    *    *    *    *    *            cron表达式
┬    ┬    ┬    ┬    ┬    ┬    ┬
┆    ┆    ┆    ┆    ┆    ┆    ┆
┆    ┆    ┆    ┆    ┆    ┆    └─────────   年(可选)[1970-2099]
┆    ┆    ┆    ┆    ┆    └──────────────   周(必选)[0-7/SUN-SAT]
┆    ┆    ┆    ┆    └───────────────────   月(必选)[1-12]
┆    ┆    ┆    └────────────────────────   日(必选)[1-31]
┆    ┆    └─────────────────────────────   时(必选)[0-23]
┆    └──────────────────────────────────   分(必选)[0-59]
└───────────────────────────────────────   秒(必选)[0-59]

通常定义 “年” 的部分可以省略,实际常用的由 前六部分组成

img

域取值

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

是否必需取值范围特殊字符
[0~59]整数* , - /
分钟[0~59]整数* , - /
小时[0~23]整数* , - /
日期[1~31]整数* , - / ? L W
月份[1~12]或[JAN~ DEC]* , - /
星期[0~7]或[SUN~SAT] (0=SUN)* , - / ? L #
1970-2099, - * /

特殊字符

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执行任务

在线Cron生成工具

浏览器Cron解析插件

这里简单说下插件的安装方法:

  • 下载插件并解压
  • 打开Chrome内核浏览器,点开右上角三点 - 更多工具 - 扩展程序
  • 在扩展程序中打开开发者模式,然后再加载已解压的拓展程序
  • 选择你刚才解压的目录,你就可以看到安装的扩展了。

 赞  赏

如果觉得我的文章对你有用,请随意打赏

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开   或者 扫一扫,即可进行扫码赞赏哦

原创文章,版权属于:涅槃博客 - love2wind
本文最后更新于2021年12月22日18时25分16秒,已超过145天没有更新,若内容或图片失效,请留言反馈
本文链接:https://love2wind.cn/archives/2217.html(转载时请注明本文出处及文章链接)
作品采用:《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权

发表评论

涅槃博客

涅槃博客

Love2wind's blog