• Linux下例行性工作自结


    1.Linux下的例行性工作有两种:

                a)单一执行的例行性工作,也就是仅执行一次就可以了——at方式

                b)循环执行的例行性工作,每隔一定的周期执行一次

    2.at方式的例行性任务的调度是由atd服务来控制的,所以atd服务如果默认开启的话,要用/etc/init.d/atd restart来开启atd服务;crontab方式的例行性任务的调度是由crond服务来控制的,所以crond服务默认没有开启的话,要用/etc/init.d/crond restart来开启crond服务。

    3.单一执行的例行性工作——at方式

    (1)atd的安全控制

             atd服务使用at.allow和at.deny两个文件来进行at的安全控制。在at.allow中配置的账户,或者不在at.dely中配置的用户才可以使用atd服务。

    (2)使用方法:

                a)at [-mldv] TIME:设定一个例行性工作

                b)at -c 工作号码:查看指定号码的工作内容

                c)atq:相当于at -l,查看当前系统中有多少的at例行性工作

                d)atrm 工作号码:相当于at  -d,取消指定号码的例行性工作

    其中设定一个at工作的例子如下:

    [root@localhost ~]# at now + 5 minutes
    at> /bin/mail root -s "testing at job" < /root/.bashrc
    at>      #这里输入ctrl+d表示结束输入
    
    也就是在at命令后面接一个时间点,然后会进入一个at shell的环境,用户便可以输入自己要执行的命令,最后使用ctrl+d结束输入。
    
    时间的格式有:
    (1)HH:MM
    eg: at 04:50   #表示04:50开始执行命令
    (2)HH:MM YYYY-MM-DD
    eg: at 04:30 2016-01-09  #表示在04:30 2016-01-09时间点执行命令
    (3)HH:MM[am|pm] [Month] [Date]
    eg: at 04:15pm March 17 
    (4)HH:MM[am|pm] + num [minutes|hours|days|weeks]
    eg: 
    at 05:29am + 5 minutes  #表示在上午05:29后的5分钟开始执行任务
    at now + 5 hours #表示5小时后开始执行任务

    Remarks:使用batch,可以让系统在CPU比较空闲的时间来执行例行性任务

    4.循环执行的例行性工作——crontab方式

    (1)crond的安全控制

             crond服务使用cron.allow和cron.deny两个文件来进行crond的安全控制。在cron.allow中配置的账户,或者不在cron.dely中配置的用户才可以使用crond服务。

    (2)crontab任务的两种配置方式

                 a)crontab -e方式:例行性任务会被记录到/var/spool/cron/${账户} 文件里面了。

                 b)写入/etc/crontab文件中的方式:有命令类型和目录规划两种设定的方式。如下:

    #法一:命令形式,即是将需要执行的命令直接写到/etc/crontab中
    */30 * * * * work sh resize_quota.sh
    
    #法二:目录形式,即是将需要例行化脚本放到一个目录中,然后使用run-parts  dir命令去执行dir中所有可执行脚本
    01 * * * * root run-parts /etc/cron.hourly  #假设我们先每小时执行一个任务,就可以将任务的可执行脚本放到/etc/cron.hourly目录中,然后run-parts去执行/etc/cron.hourly目录下所有的可执行脚本

    备注:如果修改了/etc/crontab可能不会立即生效,那么需要使用/etc/init.d/crond restart重启一下crond服务。

    (3)关于crontab时间设定的规则

    代表意义

    分钟

    小时

    日期

    月份

    取值范围

    0~59

    0~23

    1~31

    1~12

    0~7

    其中周字段中0和7都表示星期天

    几个特殊字符

    特殊字符

    代表含义

    举例

    *(星号)

    无论在那个字段,表示该字段任何时刻都执行

    0  * * * * command

    表示每星期、每月份、每一天、每小时的0分钟的时候将调度

    ,(逗号)

    0 3,6 * * * command

    表示在每3点0分和每6点0分的时候,开始执行命令

    -(减号)

    0 3-6 * * * command

    表示在每3点到6点的0分的时候,开始执行执行

    /n(数字)

    每间隔n单位

    */5 * * * * command

    表示每5分钟执行一次命令,上面和0-59/5 * * * * command是一样的。

  • 相关阅读:
    Vue入门(二)
    源码解析FlinkKafkaConsumer支持punctuated水位线发送
    CSS详细基础(五)选择器的优先级
    用verilog编写FFT软核从0到1最强实现及解析(一)
    上海亚商投顾:市场继续缩量调整 汽车、光伏板块领涨
    2023-09-11 C语言popen( )函数调用其他进程返回值 ( C知道辅助编写 )
    2331. 计算布尔二叉树的值-深度优先遍历
    新品疑似违反开源协议,TikTok被海外网友举报
    2023年中国视频流媒体行业发展历程及趋势分析:未来市场规模趋于平稳[图]
    JavaEE初阶学习:JVM(八股文)
  • 原文地址:https://blog.csdn.net/weixin_71792169/article/details/127099984