cron 有2种表达形式
6个时间刻度的话 * * * * * * 分别对应 秒 分 时 日 月 星期 ;
7个时间刻度的话 * * * * * * * 分别对应 秒 分 时 日 月 星期 年;
- 秒(0-59)
- 分钟(0-59)
- 小时(0-23)
- 月内日期(1-31)
- 月份(1-12 或 JAN-DEC)
- 星期中的天(1-7 或 SUN-SAT)
- 年份(可选字段,1970-2099)
时间刻度之间得用 ‘空格’分隔
对应的通配符有: * ? / - ,
星号(*): 指的是 该时间刻度的所有时间,即全匹配 。
问号(?):指的是 该时间刻度不指定值,注意只有 日和星期 对应的位置 可以使用,一般日和星期选择时会二选一使用免得产生冲突 。
斜杆(/): 指的是 该时间刻度的时间间隔,就比如 */2 * * * * * * 相当于 每2秒 执行一次。
横杆(-): 指的是 该时间刻度的选定范围。可以3-20 这样写,就是再这个时间范围区间的 都符合表达式条件。
逗号(,): 指的是 指定的多个时间点 都符合表达式条件,比如 10,20,30 * * * * * 就是在每分钟的10秒 20秒 30秒 的时候 执行任务。
举几个栗子:
我想在每天的12点30去睡觉 那就是:0 30 12 * * *
我想每天的21点执行去洗澡 那就是:0 0 21 * * *
我想每坐45分钟就站起来 那就是:0 */45 * * * *
每周一到周五 2小时执行一次 :0 */2 * * 1-5 (周一到周五 每2小时执行一次 2:00 、4:00 ....)
注意
在Cron表达式中同时指定日期和星期时,只有符合两个字段条件的时间点才会触发任务。有可能导致任务不被触发。