• 任务计划


    任务计划

    未来某一时间点执行一次任务
    at    指定时间点,执行一次任务
    batch 系统自行选择空闲时间执行此处指定的任务

    周期性运行任务
    cron

    at [option] TIME
    -l:列出指定队列中等待运行的作业;相当于atq
    -d:删除指定的作业;相当于atrm
    -c:查看具体作业任务
    -f /file:指定的文件中读取任务
    TIME:定义什么时候进行at这项任务的时间
    HH:MM[YYYY-mm-dd]

    touch /data/file1 > at 14:10

    执行方式:
    1,交互式
    2,输入重定向
    3,at -f 文件

    at队列存放在/var/spool/at目录中
    控制用户是否能执行at任务:
    /etc/at.{allow,deny}
    at依赖于atd服务




    周期性任务计划cron

    相关的程序包:
    cronie:主程序包,提供crond守护进程及相关辅助工具
    cronie-anacron:cronie的补充程序,用于监控cronie任务执行状态,如果任务在过去该运行的时间点没有正常运行,则anacron会随后启动一次次任务

    系统cron任务:系统维护作业 /etc/crontab
    用户cron任务:crontab命令
    日志:/var/log/cron

    # Example of job definition:
    # .---------------- minute (0 - 59)
    # |  .------------- hour (0 - 23)
    # |  |  .---------- day of month (1 - 31)
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
    # |  |  |  |  |
    # *  *  *  *  * user-name  command to be executed
    10 21 * * * root /bin/echo "Howdy"
    晚上9点10分运行echo命令

    时间表示法:
    1,特定值
    2,*
    3,离散取值 #,#,#
    4,连续取值 #-#
    5,定义步长 /#:#即为步长

    时间格式:
    @reboot 重新启动后运行一次
    @yearly

    系统的计划任务:
    /etc/crontab 配置文件
    /etc/cron.d/ 配置文件
    /etc/cron.hourly/ 脚本
    /etc/cron.daily/ 脚本
    /etc/cron.weekly/ 脚本
    /etc/cron.monthly/ 脚本

    anacron系统
    配置文件:/etc/anacrontab,负责执行/etc/cron.daily,/etc/cron.weekly,/etc/cron.monthly中系统任务
    1    5    cron.daily        nice run-parts /etc/cron.daily
    字段1:如果在这些日子里没有运行这些任务
    字段2:在重新引导后等待这么多分钟后运行它
    字段3:任务识别器,在日志文件中标识
    字段4:要执行的任务

    管理临时文件
    CentOS7使用systemd-tmpfiles-setup服务实现
    CentOS6使用/etc/cron.daily/tmpwatch定时清除临时文件

    crontab [-u user =] [-l|-r|-e][-i]
    -l:列出所有任务
    -e:编辑任务
    -r:移除任务
    -i:以交互式模式移除指定任务
    控制用户只需计划任务:
    /etc/cron.{allow,deny}

    运行结果的标准输出和错误以邮件通知给相关用户
    (1) > /dev/null
    (2) &> /dev/null
    %有特殊用途;如果在命令中要使用%,需要转义,放置在单引号中,则可不用转义

    /usr/bin/run-parts:一次性运行文件夹中的脚本
    * * * * * /usr/bin/run-parts /data/scripts --每分钟运行一次/data/scripts目录下的所有脚本

    (1)如何在秒级别运行任务?
    sleep 0.1
    usleep 1000 微秒
    每6秒执行一次
    方法一:小脚本实现
    #!/bin/bash
    while :;do
        /var/script/run.sh
        sleep 6
    done
    方法二:
    * * * * * sleep 6;/var/script/run.sh >> log.txt

  • 相关阅读:
    经典面试题sql基础篇-50常用的sql语句(有部分错误)
    Java中类方法与实例方法的区别
    认识区块链,认知区块链— —数据上链
    Excel中RATE函数的Java实现
    Excel中PMT函数的Java实现
    xtrabackup 全量备份、恢复数据
    程序员成长过程中不可忽略的几本书
    基于SpringBoot的WEB API项目的安全设计
    基于SpringCloud的Microservices架构实战案例-在线API管理
    他山之石,可以攻玉:从别人的项目中汲取经验
  • 原文地址:https://www.cnblogs.com/wangyanqiang/p/11835779.html
Copyright © 2020-2023  润新知