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,想看原文的朋友点上面链接即可)

 

posted on 2017-02-28 23:45  码农时刻  阅读(1204)  评论(0编辑  收藏  举报