cron 表达式
什么是 cron 和 cron 表达式
cron 是 Unix-based 系统上一款被广泛应用的定时任务工具。例如,运维工程师通过 cron 定时备份文件、定时清理垃圾文件、 Let's Encrypt 证书的定时更新或者DDNS 的定时检查 ip 变更。而 cron 表达式,用于定时任务的具体执行时间或周期。
时至今日,cron 表达式已经被广泛用于其他定时任务工具。也基于基础的 cron 表达式,衍生出了功能更强大的表达式。例如 Quartz 表达式,扩展了秒和年的定义。
cron 表达式
基础的 cron 表达式由5组数字组成。
┌──分鐘(0 - 59)
│ ┌──小時(0 - 23)
│ │ ┌──日(1 - 31)
│ │ │ ┌─月(1 - 12)
│ │ │ │ ┌─星期(0 - 6,表示从周日到周六)
│ │ │ │ │
* * * * *
每组数字表达了每当时间到达了指定的时间单位,就触发任务。例如:
13 * * * *
表示每小时的第13分钟,触发任务。
cron 表达式可以使用4种符号。
- "*" 表示任意值。任意分钟、任意小时,又或者说每分钟、每小时等。
- "-" 表示时间范围。例如
1-15 * * * *
表示每小时的1到15分钟,触发任务。 - "," 表示列举。例如
1,5,8,16 * * * *
表示每小时的第1、第5、第8、第16分钟,触发任务。 - "%" 表示“每”。例如
*%10 * * * *
表示每小时的每10分钟触发任务。
cron 表达式的书写和解释
简单的 cron 表达式直接手写问题不大。但是复杂的表达式就不太好手写了。何况也没人会一直记得具体的语法规则。
于是各种 cron 表达式生成器和解释器应运而生。
例如 https://www.freeformatter.com/cron-expression-generator-quartz.html。
各位可以自行 google "cron expression generator",找找适合自己的生成器。