Post

Cron 表达式

/ 分享

Cron表达式是用于指定定时任务执行时间的格式化字符串,广泛应用于软件开发和系统管理中的周期性任务(如备份数据库、清理日志)。其基本结构由6个字段组成,依次为秒(0-59)、分钟(0-59)、小时(0-23)、日期(1-31)、月份(1-12或JAN-DEC)、星期(0-6或SUN-SAT,0和7表星期天),字段间用空格分隔,支持值、范围、列表或通配符。特殊字符包括*(所有值)、/(增量,如*/5表每隔5单位)、,(多值,如1,15,30)、-(范围,如1-5)、?(日期或星期字段不指定值)。通过组合这些元素,可实现复杂调度逻辑,如“0 0 6 * * *”表每天6点执行,“0 */5 14 * * ?”表每天14点每5分钟执行,有效提升系统自动化程度,减轻人工操作负担。

简介

Cron 表达式是一种用于指定定时任务执行时间的格式化字符串。在软件开发和系统管理中,经常需要执行周期性任务,例如备份数据库、定时清理日志文件等。Cron 表达式就是为了满足这种需求而设计的。本教程将介绍 Cron 表达式的基本语法和常见用法。

Cron 表达式的基本结构

Cron 表达式由 6 个字段组成,每个字段代表一段时间。这些字段从左到右依次表示:

  1. 秒(Second):0 到 59

  2. 分钟(Minute):0 到 59

  3. 小时(Hour):0 到 23

  4. 日期(Day of month):1 到 31

  5. 月份(Month):1 到 12 或者 JAN 到 DEC

  6. 星期(Day of week):0 到 6 或者 SUN 到 SAT(0 和 7 都代表星期天)

每个字段可以是一个值、一个范围、一个列表或者一个通配符。

基本语法

一个完整的 Cron 表达式包含 6 个字段,通过空格分隔。例如:

* * * * * *

这个表达式代表每秒钟都执行任务。下面是一些常见的例子:

0 0 * * * *:每天的午夜(00:00:00)执行任务
0 0 6 * * *:每天的早上 6 点执行任务
0 0 12 * * MON-FRI:每周一至周五的中午 12 点执行任务
0 0 */2 * * *:每两个小时执行一次任务
0 30 9 * * MON-FRI:每周一至周五的早上 9 点 30 分执行任务

表达式

说明

0 0 2 * * ?

每天凌晨2点

*/5 * * * * ?

每隔5秒执行一次

0 */5 * * * ?

每隔5分执行一次

0 26,29,33 * * * ?

在26分、29分、33分执行一次

0 30 0 * * ?

每天半夜12点30分执行一次

0 15 10 ? * *

每天上午10:15执行一次

0 0 0/1 * * ?

每个整点执行一次

0 * 14 * * ?

每天14点到14:59分,每1分钟执行一次

0 0-5 14 * * ?

每天14点到14:05分,每1分钟执行一次

0 0/5 14 * * ?

每天14点到14:55分,每5分钟执行一次

0 0/5 14,18 * * ?

每天14点到14:55分,和18点到18点55分,每5分钟执行一次

0 0 18,22 * * ?

每天18点、22点执行一次

0 0 7-23 * * ?

每天7点到23点,每整点执行一次

0 0 10,14,16 * * ?

每天上午10点,下午2点,4点

0 0/30 9-17 * * ?

朝九晚五工作时间内每半小时

0 0 12 ? * WED

表示每个星期三中午12点

0 15 10 * * ? 2024

2024年的每天上午10:15触发

0 15 10 15 * ?

每月15日上午10:15触发

0 15 10 ? * MON-FRI

周一至周五的上午10:15触发

0 15 10 L * ?

每月最后一日的上午10:15触发

特殊字符

除了数字和通配符之外,Cron 表达式还支持一些特殊字符:

  • *(星号):代表所有可能的值。例如,* 在分钟字段表示每分钟都执行任务。

  • /(斜线):用于指定增量值。例如,*/10 在分钟字段表示每隔 10 分钟执行一次任务。

  • ,(逗号):用于指定多个值。例如,1,15,30 在分钟字段表示在 1 分、15 分和 30 分时执行任务。

  • -(连字符):用于指定范围。例如,1-5 在分钟字段表示从第 1 分钟到第 5 分钟执行任务。

  • ?(问号):在日期字段或者星期字段中,代表不指定具体值。例如,* * ? * * 在日期字段中表示每天都执行任务,星期字段无所谓。

总结

Cron 表达式是一种强大的定时任务调度工具,通过简单的语法就能实现复杂的调度逻辑。掌握了 Cron 表达式的基本语法和特殊字符,你就可以轻松地安排各种定时任务,提高系统的自动化程度,减轻人工操作的负担。

评论