惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
Microsoft Security Blog
Microsoft Security Blog
Recent Announcements
Recent Announcements
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Last Week in AI
Last Week in AI
罗磊的独立博客
腾讯CDC
云风的 BLOG
云风的 BLOG
月光博客
月光博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
宝玉的分享
宝玉的分享
U
Unit 42
I
InfoQ
D
DataBreaches.Net
Blog — PlanetScale
Blog — PlanetScale
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
V2EX
美团技术团队
IT之家
IT之家
Stack Overflow Blog
Stack Overflow Blog
F
Fortinet All Blogs
GbyAI
GbyAI
S
SegmentFault 最新的问题

Mark's Blog - Quchao.net

群晖定时重启 Docker 容器镜像任务 - Mark's Blog 苹果 iPhone 12 Pro Max 内置壁纸 超高清 - Mark's Blog 2020年十大网络用语出炉 - Mark's Blog - Quchao.net 群晖、坚果云、Centos同步小记 - Mark's Blog - Quchao.net 宝塔面板无法自动续签 SSL 问题解决方法 - Mark's Blog 宝塔(BT)面板安装 AList 阿里云盘列表程序 - Mark's Blog 斐讯 N1盒子ArmBian 密码重置小记 - Mark's Blog 中国程序员容易发音错误单词指南 - Mark's Blog - Quchao.net 生活模仿艺术 - Mark's Blog - Quchao.net
CRON表达式速成指南 - Mark's Blog - Quchao.net
博主: Mark · 2024-08-28 · via Mark's Blog - Quchao.net

前言

最近随着某些羊毛软件日益繁多,接触CRON 表达式也很频繁,很多人其实并不是很了解 CRON,也有人经常问我,在这里就给大家讲解一下如何写 CRON 表达式,当然如果你感觉浪费时间枯燥无味,也可以直接用下面我写的例子直接修改为自己的,指南分为速成版跟进阶版,根据需要进行阅读。


介绍

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

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

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


速成

表达式有好几种字段规范,如:Quantumult X(俗称“圈X”)支持 5 位或 6 位,他们的区别就是有没有秒的支持(6位左面第一个就是秒,5位就是左面第一位是分),以此往前类推 秒_分_时_日_月_周(礼拜几),所以最大值应该是59秒 59分 23点 31日 12月 7礼拜天

# 五位说明:
*    *    *    *    *
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- 星期
|    |    |    +---------- 月份
|    |    +--------------- 日
|    +-------------------- 时
+------------------------- 分
# 六位说明:
*    *    *    *    *    *
-    -    -    -    -    -
|    |    |    |    |    | 
|    |    |    |    |    +----- 星期
|    |    |    |    +---------- 月份
|    |    |    +--------------- 日
|    |    +-------------------- 时
|    +------------------------- 分
+------------------------------ 秒
# 实例:
*/4 7-22/1 * * *    # 每天7-22点 每4分钟执行一次
*/4 * * * *         # 全天4分钟一次
*/14 * * * *        # 全天14分钟执行一次
1 0 * * *           # 每天 0点1分执行
0 9 * * *           # 每天9点执行
0 9,12,18 * * *     # 每天9点 12点 18点分别执行一次
0 0-16/8 * * *      # 每天0点 8点 16点各一次
30 18 * * *         # 每天18点30分
10 */4 * * *        # 每天每4小时10分执行一次
1 2 1,8,16,24/1 * * # 每月1 8 16 24日 凌晨2点1分执行
0 * * * *           # 每1小时执行一次

高阶

字段是否必填允许值允许特殊字符备注
0–59*,-标准实现不支持此字段。
分钟0–59*,-
小时0–23*,-
1–31*,-?LW?LW只有部分软件实现了
1–12 or JAN–DEC*,-
星期0–7 or SUN–SAT*,-?L#?L#只有部分软件实现了
Linux和Spring的允许值为0-7,0和7为周日
Quartz的允许值为1-7,1为周日
年份1970–2099*,-标准实现不支持此字段。

标准字段

逗号用于分隔列表。例如,在第5个字段(星期几)中使用 MON,WED,FRI 表示周一、周三和周五。

连字符定义范围。例如,2000-2010 表示2000年至2010年期间的每年,包括2000年和2010年。

除非用反斜杠(\)转义,否则命令中的百分号(%)会被替换成换行符,第一个百分号后面的所有数据都会作为标准输入发送给命令。

非标准字段

“L”代表“Last”。当在星期几字段中使用的时候,可以指定给定月份的结构,例如“最后一个星期五”(5L)。在月日字段中,可以指定一个月的最后一天。

“日”字段可以使用“W”字符。指定最接近给定日期的工作日(星期一-星期五)。例如,15W,意思是:“最接近该月15日的工作日。”;所以,如果15号是星期六,触发器在14号星期五触发。如果15日是星期天,触发器在16日星期一触发。如果15号是星期二,那么它在15号星期二触发。“1W”,如果这个月的第一天是星期六,不会跨到上个月,触发器会在这个月的第三天(也就是星期一)触发。只有指定一天(不能是范围或列表)的时候,才能指定“W”字符。

星期几字段可以使用“#”,后面必须跟一个介于1和5之间的数字。例如,5#3表示每个月的第三个星期五。

在某些实现中,“?”用来代替“*”以将月中的某一天或周中的某一天留空。其他cron的实现是替换“?”为cron守护进程的启动时间,例如:??* * * *,如果cron在上午8:25启动,将更新为25 8 * * * *并在每天的这个时间运行,直到再次重新启动。

分钟字段设置 */5表示每5分钟一次,注意:这里指的是能被5整除的分钟数。

结语

最后附上在线执行工具,如果你不确定表达式的写法,或者无法解读,把 CRON 表达式 贴上确定一下。 https://tool.lu/crontab
网友分享 https://crontab.guru/


版权声明:本文为原创文章,版权归 Mark's Blog 所有,转载请注明出处!

本文链接:https://www.quchao.net/Crontab.html

友情提示:如果博客部分链接出现404,请留言或者联系博主修复。

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

赞赏作者

扫一扫支付