一、配置
1)全局用户配置文件(/etc/crontab)
直接VI等编辑就可以。
2)个人用户配置(临时配置)
二、配置格式
* * * * * command
分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期(0-6,0代表星期天) 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
相关参数详细说明:
星号(*)可以用来代表所有有效的值。譬如,月份值中的星号意味着在满足其它制约条件后每月都执行该命令。三、配置实例
整数间的短线(-)指定一个整数范围。譬如,1-4 意味着整数 1、2、3、4。
用逗号(,)隔开的一系列值指定一个列表。譬如,3, 4, 6, 8 标明这四个指定的整数。
正斜线(/)可以用来指定间隔频率。在范围后加上 /<integer> 意味着在范围内可以跳过 integer。譬如,0-59/2 可以用来在分钟字段定义每两分钟。间隔频率值还可以和星号一起使用。例如,*/3 的值可以用在月份字段中表示每三个月运行一次任务。
开头为井号(#)的行是注释,不会被处理。
0 */1 * * * ls
#每隔2个小时执行一次 ls
0 */2 * * * ls
#每隔3个小时执行一次 ls
0 */3 * * * ls
#每隔4个小时执行一次 ls
0 */4 * * * ls
#每隔10天执行一次 ls
0 0 */10 * * ls
#每天1点执行 ls
0 1 * * * ls
出处:https://blog.csdn.net/hot_vc/article/details/48261195
===================================================================
cron 表达式 1小时30分钟,(90分钟或100分钟)执行一次
注:不涉及日历(不指定某月天(周几)等),比如定时任务的需求:间隔 多少秒/分/时( 每隔99秒,每隔100分钟执行等)
每隔90分钟执行一次
90*2= 180 = 3个小时
需要添加2个cron,间隔3小时
表达式:
cron1 0 30 1/3 * * ? (1.30,4.30,7.30,,,,)
cron2 0 0 0/3 * * ? (3.00,6.00,9.00,,,,)
每隔100分钟
100*3= 300 = 5个小时
需要添加3个cron,间隔5小时;
cron1 0 40 1/5 * * ? (1.40,6.40,11.40,,,)
cron2 0 20 3/5 * * ? (3.20,8.20,13.20,,,,)
cron2 0 0 5/5 * * ? (5.00,10.00,15.00)
每隔2个半小时执行一次
150*2= 300 = 5个小时
需要添加2个cron,间隔5小时
表达式:
cron1 0 30 2/5 * * ? (2.30,7.30,12.30,,,,)
cron2 0 0 0/5 * * ? (5.00,10.00,15.00,,,,)
受其他博文启发,一个定时任务实现不了,那这个任务,就添加多个触发时间,来实现;
需求1:从0点开始,每隔2个半小时,执行一次
思路记录:
1.先列出,我们预期的执行时间:
2.30,5.00,7.30,10.00,12.30,15:00
2.找规律:我们知道间隔 整数(1,2,3,,,)个小时的cron表达式;根据此前提,找间隔 整数个小时 时间的规律
3.规律结果
(2.30,7.30,12.30,,,,) 两点半开始,间隔5小时 那么此表达式==>0 30 2/5 * * ?
(5.00,10.00,15.00,,,,) 0点开始,间隔5小时 那么此表达式==> 0 0/5 * * ?
需求2:在指定时间t后,启动定时任务a,
可以采用:.再添加一个执行定时任务,动态添加那要求任务a,在那指定的时间t开始执行一次,有且只调用一次
总结:间隔 n 个小时,执行一次
1.找出n和60的最小公倍数:gbs;
2.gbs除60=间隔时间tt (tt<23?)
3.gbs除n=cron表达式个数
附加表达式在线测试网站: http://cron.qqe2.com/
注意:粘贴我们自己写的表达cron表达式,查看运行结果时,得核对一下表达式是否被修改;我就遇到 0/3 变===>0-3
原文链接:https://blog.csdn.net/weixin_38981413/java/article/details/103755671
===