今天记录一个比较容易忘的小知识
cron表达式:* * * * * * 中间有空格分开 代表的含义为: 秒 分 小时 月份中的日期 月份 星期中的日期 年份(一般年份不写,默认每年执行)
字段 | 允许值 | 允许的特殊字符 |
---|---|---|
秒(Seconds) | 0~59的整数 | , - * / 四个字符 |
分(Minutes) | 0~59的整数 | , - * / 四个字符 |
小时(Hours) | 0~23的整数 | , - * / 四个字符 |
日期(DayofMonth) | 1~31的整数 | ,- * ? / L W C 八个字符 |
月份(Month) | 1~12的整数或者 JAN-DEC | , - * / 四个字符 |
星期(DayofWeek) | 1~7的整数或者 SUN-SAT (1=SUN) | , - * ? / L C # 八个字符 |
年(Year) | 1970~2099 | , - * / 四个字符 |
最常用的特殊字符就是 *和?
*是通配符,用在秒表示每秒,分每分以此类推
?:只能用在DayofMonth和DayofWeek两个域,由于指定日期(DayofMonth)和指定星期(DayofWeek)存在冲突,所以当指定了日期(DayofMonth)后(包括每天*),星期(DayofWeek)必须使用问号(?),同理,指定星期(DayofWeek)后,日期(DayofMonth)必须使用问号(?)
- 表示区间 比如分钟 1-5 从1到5分钟每分钟执行以此
/:表示起始时间开始触发,然后每隔固定时间触发一次。比如分钟 10/30,则意味着10分(小时中的10分)触发一次,40分别触发一次.
?和* 通常搭配使用
每天的九点执行一次:0 0 9 * * ? (指定了日期 * 为月的每天,星期必须为?)