Linux中Cron任务间隔执行:每隔几分钟/几小时/几天

05/22 16:16
阅读数 1.3K

一、配置

  1)全局用户配置文件(/etc/crontab)

  直接VI等编辑就可以。

  2)个人用户配置(临时配置)

  

  加任务:
    crontab -e
    0 */1 * * * command
    0 */2 * * * command
  查询任务是否加了:
    crontab -l
    0 */1 * * * command
    0 */2 * * * command 

 

二、配置格式

*   *  *  *  *  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 的值可以用在月份字段中表示每三个月运行一次任务。

开头为井号(#)的行是注释,不会被处理。




三、配置实例

 

#每隔1个小时执行一次 ls

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

===

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部