Quartz Jobs中两个Cron表达式的语法正确性确认请求
Quartz Cron表达式语法验证
先明确你两个表达式的情况:
1. 你使用的0 10 * ? * *
注意:这个表达式实际是每小时的10分0秒触发一次,并非每10分钟触发。如果你的需求就是每小时到10分执行任务,那它是完全有效的;但如果你确实需要每10分钟触发一次,正确表达式应该是0 */10 * ? * *(通过*/10在分字段实现每10分钟匹配)。
2. 每月最后一天23:15触发的0 15 23 L * ?
这个表达式完全正确。
Quartz中L在「日」字段位置时,专门用来指代当月最后一天,不管当月是28、29、30还是31号。同时这里用?在「周」字段是必要的——Quartz规定「日」和「周」字段不能同时指定具体匹配规则,必须留一个用?表示“不关注”,避免逻辑冲突。所以这个表达式会精准在每个月最后一天的23:15触发任务,无需等月末测试验证。
补充Quartz Cron与Linux Cron的核心差异(避免踩坑):
- Quartz是7段格式:
秒 分 时 日 月 周 [年],Linux Cron是5段:分 时 日 月 周,顺序和段数均不同 L是Quartz特有的扩展字符,Linux Cron不支持该用法?是Quartz用于处理「日」「周」字段冲突的特殊符号,Linux Cron无此规则
内容的提问来源于stack exchange,提问作者tiamat
相关产品推荐
相关产品推荐

