• cron语法简介


    前言

    简单的字符串,经过排列组合,总能产生神奇的作用。比如大家耳熟能详的正则表达式,再比如今天要介绍的cron。他们的共同点是简单,但是掌握不好就容易闹笑话。就拿我来说,我想写一个任务,每4个小时执行一次,于是我写下了如下的cron表达式:

    * */4 * * *
    

    于是变成了每4小时的每分钟执行一次,也就是每4小时执行60次,如果这个任务比较吃性能,获取还能收获卡死服务器的效果。言归正传,今天来介绍一下cron的语法。在介绍语法之前,先推荐一个网站,https://crontab.guru/, 可以把表达式转换成人类的语言,对于不太熟悉cron的同学来说可以先用这个校验一下,避免犯我这样的错误。

    整体

    首先要说明的是,根据cron的实现不同,语法上也是有区别的,比如有的实现了秒,有的,-可以一起用。以下的结构来自维基百科:

    # ┌───────────── minute (0 - 59)
    # │ ┌───────────── hour (0 - 23)
    # │ │ ┌───────────── day of the month (1 - 31)
    # │ │ │ ┌───────────── month (1 - 12)
    # │ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday;
    # │ │ │ │ │                                   7 is also Sunday on some systems)
    # │ │ │ │ │
    # │ │ │ │ │
    # * * * * *
    
    

    由上面可知,一个cron表达式由5个部分组成:分,时,一个月的第几天,月,一周的第几天。这里解释一下前面两个天的区别,前面的表示第几号,后面的表示周几。那么每一部分可以取哪些值呢?

    • 分 0-59 *
    • 时 0-23 *
    • 日 1-31 *
    • 月 1-12 *
    • 周 0-6 *

    但是光靠上面的值,还是不够,举个例子,如果我们想写个每分钟都执行的任务,那么可以这么写:

    * * * * * 
    

    但是如果要隔5分钟执行一次,就需要新的语法了

    隔几分 ---- /

    一个/简单的表达了隔的意思,借助这个符号,我们就可以描述上面的问题了:

    */5 * * * *
    

    但是如果我只是想在20-30分这段时间执行任务呢,那就有请-

    从...到... ---- ‘-’

    20-30 * * * * 每小时的20-30分执行
    
    30 * * * * 仅在每小时30分执行一次
    
    20-30/2 * * * * 20-30分钟这段时间,每两分钟执行一次
    

    某些 --- ‘,’

    正如-经常表示连续的,,经常被用来表示离散的,比如在2,3,5,7,11分钟做某项任务,可以这么写:

    2,3,5,7,11 * * * *
    

    ,-/也可以一起使用:

    2,5-13/4 4 * * * 在第2分钟,第5-13分钟执行一次
    2-30/7,5-13/4 * * * * 在第2-30分每隔7分钟, 5-13每分钟执行一次
    

    有了-,/,,这3个符号,我们就可以灵活描述任何复杂的任务了。

    缩写语法

    月份,周也可以使用缩写语法;

    5 0 * JAN-JUL MON-THU  At 00:05 on every day-of-week from Monday through Thursday in every month from January through July
    

    本文完

  • 相关阅读:
    GlusterFS 配置及使用
    zabbix-监控Linux服务器
    ansible安装及使用
    使用ansible 完成yum安装lamp环境
    mysql基础
    shell基础
    shell
    Javascript动画效果(四)
    Javascript动画效果(三)
    Javascript动画效果(二)
  • 原文地址:https://www.cnblogs.com/imgss/p/12557964.html
Copyright © 2020-2023  润新知