无论是在软件开发还是实际生产过程中,定期执行特定的任务或者指令是非常有必要的,这不但能够将程序员们从这种重复劳动中解放出来,而且任务的执行周期也更加准确。
任务调度框架中,为了表示任务的执行周期,cron表达式被发明出来。
1、何为Cron表达式
cron表达式是类unix系统中用于表示任务调度的表达式,能够表示特定周期进行的特定的时间、日期等。
cron表达式的具体形式,有两种说法:
1)根据百度百科,cron表达式由6个或7个域表示,域之间使用空格分开;
2)根据维基百科,cron表达式由5个或6个域表示,域之间使用空格分开;
两种来源基本相同,区别在于维基百科当中不考虑秒(SECONDS)这一个属性。除此之外,二者共同包括的内容有:
minute hour dayofmonth monthofyear dateofweek year(可以省略)
本文中参考百度百科的说法,采用以下格式:
second minute hour dayofmonth monthofyear dateofweek year(可以省略)
2、cron表达式的格式
1)second minute hour
这三个时间域的间隔表示法各有四种,分别为:
A) 全部时间,通配符为“*”;
B)一段持续时间,通配符为“-”;
C)从特定时间点开始,以特定的周期持续的时间,通配符为“/”;
D)某一些时间点,通配符为“,”;
示例):
- 每秒一次:* * * * * ?
- 每10秒一次:0/10 * * * * ?
- 每分钟的20秒-30秒执行:20-30 * * * * ?
- 每分钟一次:0 * * * * ?
- 每5分钟一次:0 0/5 * * * ?
- 每小时一次:0 0 * * * ?
- 每天中午12点:0 0 12 * * ?
2)day month date year
这四个时间域的表示方法同前三个略有不同:
day,date的表示方法各有6种:
day的表示方法:
A)每一天,通配符为“*”;
B)从某一天到某一天,每天一次,通配符为“-”;
C)从某一天开始,每隔几天一次,通配符为“/”;
D)每月特定的日子,通配符为“,”;
E)每月最后一天,通配符为“L”;
F)每月距离某一天最近的工作日,通配符为“W”;
date的表示方法:
A)每一天,通配符为“*”;
B)某一周的某一天,通配符为“#”;
C)从某一天开始,每隔几天一次,通配符为“/”;
D)每月特定的日子,通配符为“,”;
E)每月最后一个星期,通配符为“L”;
month表达方式有4种,和second,minute,hour相同
A) 每个月,通配符为“*”;
B)从几月到几月,通配符为“-”;
C)从几月开始,之后每几个月一次,通配符为“/”;
D)某一些特定月份,通配符为“,”;
year表达方式有3三种:
A) 全部年份,通配符为“*”;
B)从某一年到某一年,通配符为“-”;
C)不指定,此时该域省略。