目录
一、Cron
秒 分 时 日 月 周 年份
{秒数}{分钟} ==> 允许值范围: 0~59 ,不允许为空值,若值不合法,调度器将抛出SchedulerException异常
“*” 代表每隔1秒钟触发;
“,” 代表在指定的秒数触发,比如”0,15,45”代表0秒、15秒和45秒时触发任务
“-“代表在指定的范围内触发,比如”25-45”代表从25秒开始触发到45秒结束触发,每隔1秒触发1次
“/”代表触发步进(step),”/”前面的值代表初始值(““等同”0”),后面的值代表偏移量,比如”0/20”或者”/20”代表从0秒钟开始,每隔20秒钟触发1次,即0秒触发1次,20秒触发1次,40秒触发1次;”5/20”代表5秒触发1次,25秒触发1次,45秒触发1次;”10-45/20”代表在[10,45]内步进20秒命中的时间点触发,即10秒触发1次,30秒触发1次
{小时} ==> 允许值范围: 0~23 ,不允许为空值,若值不合法,调度器将抛出SchedulerException异常,占位符和秒数一样
{日期} ==> 允许值范围: 1~31 ,不允许为空值,若值不合法,调度器将抛出SchedulerException异常
{星期} ==> 允许值范围: 1~7 (SUN-SAT),1代表星期天(一星期的第一天),以此类推,7代表星期六(一星期的最后一天),不允许为空值,若值不合法,调度器将抛出SchedulerException异常
{年份} ==> 允许值范围: 1970~2099 ,允许为空,若值不合法,调度器将抛出SchedulerException异常
注意:除了{日期}和{星期}可以使用”?”来实现互斥,表达无意义的信息之外,其他占位符都要具有具体的时间含义,且依赖关系为:年->月->日期(星期)->小时->分钟->秒数
L ==> 表示last,例如星期中表示7或SAT,月份中表示最后一天31或30,6L表示这个月倒数第6天,FRIL表示这个月的最后一个星期五
W ==> 只能用在月份中,表示最接近指定天的工作日
# ==> 只能用在星期中,表示这个月的第几个周几,例如6#3表示这个月的第3个周五
示例
0 * * * * ? 每1分钟触发一次
30 * * * * ? 每半分钟触发任务
0 0 * * * ? 每天每1小时触发一次
30 25 * * * ? 每小时的25分30秒触发任务
0 0 10 * * ? 每天10点触发一次
25 30 2 * * ? 每天2点30分25秒执行一次
0 * 14 * * ? 在每天下午2点到下午2:59的每分钟触发
0 30 9 1 * ? 每月1号上午9点半
0 15 10 15 * ? 每月15日上午10:15触发
*/5 * * * * ? 每隔5秒执行一次
0 */1 * * * ? 每隔1分钟执行一次
0 0 5-15 * * ? 每天5-15点整点执行
0 0/3 * * * ? 从0分钟开始,每隔三分钟执行一次;即0,3,6,9......
0 0 0 1 * ? 每月1号0点0分0秒执行一次
30 10 1 8 8 ? 2024 2024年8月8号1点10分30秒触发任务
30 10 1 ? 8 * 2024 2024年8月每天1点10分30秒触发任务
30 10 1 ? 8 SUN 2024 2024年8月每周日1点10分30秒触发任务
15,30,45 * * * * ? 每15秒,30秒,45秒时触发任务
15-45 * * * * ? 15到45秒内,每秒都触发任务
15/5 * * * * ? 每分钟的每15秒开始触发,每隔5秒触发一次
15-30/5 * * * * ? 每分钟的15秒到30秒之间开始触发,每隔5秒触发一次
0 0/3 * * * ? 每小时的第0分0秒开始,每三分钟触发一次
0 15 10 ? * MON-FRI 星期一到星期五的10点15分0秒触发任务
0 15 10 L * ? 每个月最后一天的10点15分0秒触发任务
0 15 10 LW * ? 每个月最后一个工作日的10点15分0秒触发任务
0 15 10 ? * 5L 每个月最后一个星期四的10点15分0秒触发任务
0 15 10 ? * 3#6 每个月第六周的星期二的10点15分0秒触发任务
二、Crontab
* * * * *
分 时 日 月 周
时间 | 含义 | 范围 |
分 | 一小时中的第几分钟 | (0~59) |
时 | 一天中的第几个小时 | (0~23) |
日 | 一个月中的第几天 | (1~31) |
月 | 一年中的第几个月 | (1~12) |
周 | 一周中的星期几 | (0~7 0和7都代表星期日) |
示例
每月的2号、6号、8号 8点-12点 每25分钟 执行
*/25 8-12 2,6,8 * *
符号 | 含义 |
* | 代表任意时间 |
, | 代表不连续的时间;例:0 6,13,18 * * * 表示在每天的6点0分、13点0分、18点0分执行一次 |
- | 代表连续的时间范围;例:0 8 * * 1-6 表示在周一到周六的8点0分执行命令 |
/ | 代表每隔多久执行一次;例:*/6 * * * * 表示每隔6分钟就执行一次 |
选项
选项 | 含义 |
-u | 用来指定某个用户的crontab的服务 |
-e | 编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件。 |
-l | 显示某用户的 crontab 文件内容,如果不指定用户,则表示显示当前用户的 crontab 文件内容。 |
-r | 从 /var/spool/cron 删除某用户的 crontab 文件,如果不指定用户,则默认删除当前用户的 crontab 文件。 |
-i | 在删除用户的 crontab 文件时,给确认提示。 |
[root@mjy ~]# cd /opt
[root@mjy opt]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
crontab注意事项:
- 六个选项不能空,如不确定,用*代表任意时间
- crontab 最小有效时间是分钟,最大有效时间是月
- 定义时间时,日期和星期最好不要一起出现,因为都是以天为单位,容易混淆、
- 在定时任务中,最好用相对路径。有时用相对路径会报错