• crontab每小时运行一次(转)


    https://blog.csdn.net/liu0808/article/details/80668705

    先给出crontab的语法格式

    对于网上很多给出的每小时定时任务写法,可以说绝大多数都是错误的!比如对于下面的这种写法:

    00 *   * * *  #每隔一小时执行一次
    00 */1 * * *  #与上面是相同的任务

    这种是正确的吗?对照最前面给出的语法格式来看,这个定时任务在0分、每小时、每天、每月、每星期执行,看起来似乎很合理啊?前一个小时的0分和后一个小时的0分不就是相隔一个小时吗?这样的话不就是每隔一个小时执行吗?再仔细看看,好像有点不对劲,为什么是每小时的0分?如果我在11:55创建了定时任务,希望每小时执行一次,那么接下来这个定时任务是在12:55执行,还是在12:00执行?很显然,它是每小时的0分执行,也就是在12:00执行。

    似乎没区别?那么请思考下,每隔3小时执行如何写?

    网上给出的写法如下:

    0 */3 * * * #错误的每隔3小时执行一次写法

    这种也是错误的写法,这种能充分展示前面一小时执行一次带来的迷惑感,这种写法其实是每整3小时的0分执行一次。也就是说,它会在每天的3点、9点、12点...等3的整数倍时间点来执行,并不是真正意义上每隔3个小时执行,如同前面类似,如果你在11:56创建这种每3小时的定时任务,那么它会在12点就开始执行,而不是14:56执行。请看如下验证:

    11:56分创建上面所谓的“每3小时执行一次”的定时任务:

    4分钟后而不是3小时后,crontab执行了该定时任务:

    事实上,对于这种 "0 */3 * * * " 这种分钟时间点固定,小时按每小时或者每3小时的写法,都是从1点开始算倍数,比如每一小时就是1点、2点、3点,而每2小时就是2点、4点、6点,每3小时就是3点、6点、9点等等,以此类推。

    除此之外,网上还有人给出这种的每小时执行一次的定时任务写法:

    * */1 * * * #错误的每隔一小时执行一次,事实上每分钟执行一次

    这种比前面那种还不如,它压根不是每小时执行,而是每分钟执行!为什么?因为分钟要求的是每分钟执行,而小时却要求每一个小时执行,这2个分明是冲突的时间策略。最终以分钟为准,所以它是每分钟执行一次。

    真正的每隔一小时、每隔105分钟执行的定时任务应该如何写呢?如下:

    */60  * * * * #每60分钟即每小时执行一次
    */105 * * * * #每105分钟执行一次
  • 相关阅读:
    前端中不同页面之间传递参数的几种方式
    js中的闭包内存图
    【JavaScript基础】js中关于声明提前的几个误区
    【面试】前端面试题
    js继承的几种方式
    原生Ajax实现异步交互
    git基本使用
    一个简单的SSM框架实例(使用IDEA)
    高安全性的JavaScript
    高性能的JavaScript
  • 原文地址:https://www.cnblogs.com/zuizui1204/p/9844762.html
Copyright © 2020-2023  润新知