spring batch schedule(任务调度)值cron 表达式
首先要知道cron是什么,我也不知道cron是什么😄
维基百科上有关于cron的描述https://zh.wikipedia.org/wiki/Cron
cron是crontab的缩写,crontab是常见于unix和类unix的操作系统中用于设置周期性的执行指令。
cron指令的作用是从标准设备中读取指令,并将其存放在crontab的文件中,以供后续读取和执行(crontab来自希腊语chronos,原意是时间的意思)
通常情况下crontab存储的指令被守护进程激活,crond常常在后台运行,每一分钟检查是否有预定的作业要执行,这类作业就叫cron jobs
crontab文件包含送交cron守护进程的一系列作业和指令,每个用户可以拥有自己的crontab文件,同时操作系统保存一个针对整个操作系统的crontab文件,该文件通常存放于/etc或者/etc之下的子目录中,而这个文件只能由系统管理员来修改。
crontab文件的每一行均遵守特定的格式,由空格或tab分隔为数个领域,每个领域可以放置单一或多个数值
使用方法
a、操作符号:包含3个符号 逗号(,),连词符号(-),星号(*)
逗号(,):分开值的作用,如 1,2,3,4,5
连词符号(-):指定值的范围,如1-5,起作用和上面用逗号分开的 1,2,3,4,5一样
星号(*):代表任何可能的值(通配符)
b、时间设置(关键)
# 文件格式说明 # ——分钟(0 - 59) # | ——小时(0 - 23) # | | ——日(1 - 31) # | | | ——月(1 - 12) # | | | | ——星期(0 - 7,星期日=0或7) # | | | | | # * * * * * 被执行的命令
在springframe-batch 中@Cron注解增加了精确到秒级的支持
@Cron(******)分别是:秒,分钟,小时,日,月,星期,在每个标志后面加上/代表这个位上的时间每个多少时间粒度执行一次任务
每一位如果都指定了具体的值的话如 1 2 3 4 5 Mon * 就是在一个具体的时间点执行任务,如果某一位是通配符代表这一位是在这个位上时间范围内的任意值
注意:这个格式中的*号不是代表一位数字,* 号的意思是一个日期单位标准下的时间值,比如分钟对应的时间值,其可以是0,也可以是小于等于59的数字。同理第二个*号的取值范围是0-23之间的数值,往下类推。当然时间对应单位的值是按照上面的排序来的,先试分钟然后小时然后日,月,星期,中间用空格分开。这个文件规则加上a中所描述的3中符号一起构成指令执行的时间调度规则。
记忆方法就是 除了 “星期”外 按照时间的粒度从小到大排序,时间的格式按照标准时间格式。,然后加上命令即可
举例:1 2 3 4 5 touch ~/right_$(date +\%Y\%m\%d).txt
(以上内容多出自wikipedia,想看原文的朋友点上面链接即可)