utils_cron

3 min read
cron

cron

cron是linux下的定时执行任务的服务。

cron表达式

七段

秒 分 时 日 月 星期几 年

这里其实比较恶心的是星期的引入,他也表示哪一天,所以和日字段,有冲突,两者不能同时指定,七段中*指任意一天,也算指定,?则不算指定。所以这两个字一般至少有一个是问号?。问号同时也是只有这俩天字段能用的。这种问号的形式可能不适用于后面的五段式。

【注意】取值范围秒分0-59,时0-23,日1-31,月1-12,星期1-7但是1是指周天,2是周一依次类推(歪果仁觉得周天是一周的第一天...)

常用的其他符号有:

  • [* 表示每一xx都可以执行,典型例子 * * * * * ? * 代表每秒钟都能执行。]
  • [- 表示范围内每一xx都可以执行,典型例子1-3 * * * * ? * 代表每分钟的01/02/03秒各执行一次。]
  • [, 表示或者。典型例子1,3,5 * * * * ? * 代表每分钟的01/03/05秒各执行一次。]
  • [x/y 表示从第几x开始每y执行一次。典型例子 1/30 * * * * ? * 代表从01秒开始之后每30s执行一次。]

六段的表示方法也有,是没有上面的年。

秒 分 时 日 月 星期几

也有五段的,crontab中用的就是五段,在六段的基础上没有秒

分 时 日 月 星期几

实例

image

上图中可以看出crontab不支持?。直接用*同时指定日和周就可以。

Spring Boot中配置定时任务

1 在启动类添加注解@EnableScheduling 2 在任意一个SpringBean类中写定时执行任务的方法 3 在这个方法上添加@Scheduled注解,该注解支持的参数可以是一个cron表达式(六段),也可以是设置执行周期和初次执行延时。

image