• Linux计划任务


    centos7—计划任务(at、cron)

    计划任务:让计算机在指定的时间执行指定的事情

    1、分类:一次性计划任务:at(临时的计划任务)、周期性计划任务:cron

    2、计划任务管理:查atq、创建at、删除atrm

    1
    2
    3
    4
    5
    6
    注:服务器重启一般都是晚上   凌晨2点
    at 时间
    atq 或 at -l 查计划列表
    eg. at 20:00
    at> poweroff 关机
    at> ctrl+d

    3、时间的写法

    HH:MM   //18:30
    midnight   //0点 (午夜)
    noon   //12点 (中午)  
    teatime //16点(下午4点)
    AM  或   PM后缀指定一天的上午或下午。  //at  2:00 pm
    MMDDYY  、  MM/DD/YY 或 DD.MM.YY
    now + 计数  时间单位(minutes  、hours  、  days 或 weeks)
        eg. at now + 3 hours(从现在开始起三个小时后)
        eg. at 4pm  + 3 days   //三天以后的下午4点执行一个任务
             at 2am + tomorrom  //明天上午2点
             at 10am Jul 31   //7月31日上午10点
    

    案例一:凌晨2点备份/etc目录 到 /tmp格式为 etc.tar.xz

    at 02:00
    at> tar cvJf /tmp/etc.tar.xz /etc
    at> ctrl+d
    

    4、查看所有用户的计划任务

    atq
    at -l
    

    5、查看某个计划任务的详细内容

    at -c 工作号
    

    6、删除计划任务

    atrm 工作号 ...
    at -d 工作号 ...
    

    案例二:脚本方式创建at计划任务.

    echo  'ls;date;pwd'  | at  3:00      #用管道符将任务传给at命令
    

    案例三:用at将指定文件(-f 文件名)中的命令设为计划任务.

    #首先,创建命令文件
    vim /opt/aplan      #添加如下内容
        ls
        date
        pwd
        tar -czvf /tmp/etc.tar.gz /etc
    

    各例子展示:

    # at 5pm+3 days    #三天后的下午5点,执行 /bin/ls
    at> /bin/ls
    at> 
    job 7 at 2019-09-13 17:00
    
    # at 17:20 tomorrow    #明天17点钟,输出时间到指定文件内
    at> date >/root/date.log         
    at> 
    job 8 at 2019-09-13 17:20
    
    
    # atq      #查看任务
    8       2019-09-13 17:20 a root
    7       2019-09-13 17:00 a root
    
    # atrm 7     #删除任务
    
    # atq 
    8       2019-09-13 17:20 a root
    
    # 指定在今天下午5:30执行某命令。以下命令格式,结果都一样:
    
    # at 5:30pm 
    
    # at 17:30 
    
    # at 17:30 today 
    
    # at now + 5 hours 
    
    # at now + 300 minutes 
    
    # at 17:30 24.2.99 
    
    # at 17:30 2/24/99 
    
    # at 17:30 Feb 24 
    
    # at -f /home/test/work 4pm + 3 days     #在三天后下午4点执行文档work中的作业
    

    7、at权限管理、安全

    /etc/at.allow      白名单:只允许在此名单内的用户使用at(此文件本身不存在)
    /etc/at.deny      黑名单:在此名单内的用户不可以使用at
    注:当两个文件都不存在,只有root用户可以使用at
          当两个文件都存在,allow优先执行
    

    at服务管理:

    查at软件是否已安装:pm -q at  
    查at的文件列表:rpm -ql at
    查at的定时列表:at -l
    查看单个at任务内容:at -c 工作号
    查at的配置文件列表:rpm -qc at
    查at服务状态:systemctl status atd   或   service atd status
    重启at服务:systemctl restart atd   或   service atd restart
    关闭at服务:systemctl stop atd   或   service atd stop
    开机不启动at服务:systemctl disable atd   或   chkconfig atd off
    开机启动at服务:systemctl enable atd   或   chkconfig atd on
    

    at的其他文件:

    计划文件清单:ls   /var/spool/at/*    用cat可以看这些文件
    

    cron:周期性计划任务、循环性计划任务,主要用于备份数据。

    crontab  
    usage:crontab [-u user] [ -e | -l | -r ]
    -u <user>  define user      #指定用户
    -e      edit user's crontab      #编辑计划任务
    -l      list user's crontab      #查看计划任务
    -r      delete user's crontab      #删除计划任务
    1、crontab -e      编辑周期性计划任务的内容
    2、查看配置:cat   /etc/crontab
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    时间
    min hour day month week command
    分钟 小时 日 月 周 动作(任务命令)
    0-59 0-23 1-31 1-12 0-7 命令或脚本(写绝对路径)
    30 2 1 * * rm -rf /tmp/* //每月1号的2:30分删除/tmp目录下的所有文件
    5 * * 6 3 rm -rf /tmp/* //每年6月的每周三每小时的5分钟删除/tmp目录下的所有文件
    6 6 * 6 6 rm -rf /tmp/* //每年6月的周六的6点6分钟删除/tmp目录下的所有文件


    * 任何时刻
    - 一段时间 // 8-11 * * * * rm -rf /tmp/* //每小时的8分钟 9分钟 10分钟 11分钟 删除/tmp目录下所有文件
    , 分隔(不连续的时间) // 1,2,5,9 * * * * rm -rf /tmp/* //每小时的1分钟 2分钟 5分钟 9分钟 删除/tmp目录下所有文件
    0-4,8-12 //
    0-23/2 时间间隔 //1 0-23/2 * * * rm -rf /tmp/* // "0,2,4,6,8,10,12,14,16,18,20,22").
    */2 每隔2小时 //1 */2 * * * rm -rf /tmp/* 每隔2小时执行rm命令


    * 0-23 * * * rm -rf /tmp/*
    * */1 * * * rm -rf /tmp/*

    3、时间的写法
    The time and date fields are:

    field          allowed values
    -----          --------------
    minute         0-59
    hour           0-23
    day of month   1-31
    month          1-12  (or  names,
    see below)
    day  of  week    0-7  (0 or 7 is
    Sun, or use names)
    

    案例一:每个星期三的下午10:00备份/etc/目录到/tmp目录叫2019-09-13_etc.tar.gz备份文件包含当天日期

     crontab -e
     * 22 * * 3 /usr/bin/tar cvzf /tmp/`/usr/bin/date +%F`_etc.tar.gz /etc 
    (注:`命令`中的``为命令替换功能,系统会先执行``(反撇,反引号)中的命令.也可以将``写成$())
    

    案例二:只保留最近1个月的日志文件

    crontab -e
    1 * * * *  find /var/log -mtime +30 |xarge -i rm -rf {}
    

    案例三:每月1号的凌晨2点半清空临时盘

    crontab -e
    30  2  1  *  *  /usr/bin/rm -rf /tmp/* 
    

    案例四:每周每天的晚上8:10关闭电脑,除了星期六,星期五,星期日的17:10关闭电脑

    crontab -e
    10 20 * * 1-4  /usr/sbin/poweroff
    10 17 * * 5,7  /usr/sbin/poweroff
    

    案例五:max用户每天在家目录创建一个以日期命名的目录20190913

    crontab -u max -e
    1  0  *  *  *  /bin/mkdir  /home/max/`date +%Y%m%d`
    

    4、查询周期性计划任务的内容

    crontab -l      #查看当前用户定时运行的程序
    crontab -u jim -      #查看指定用户
    

    5、删除某用户的所有周期性计划任务(删除某个计划任务crontab -e 进入文本删除)

    crontab -r      #当前用户
    crontab -u jim -r      #指定用户
    

    系统定义的计划任务(默认)

      更新whatis数据库
      更新updatedb数据库
      日志定期轮滚(日志切割)
      清理/tmp /var/tmp
      收集系统的状态信息
    
    
    vim /etc/crontab  配置文件        
    # For details see man 4 crontabs
    
    
    # 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  
    */5 * * * *   root  命令   //每隔5分钟以root身份去执行命令
    

    以下目录内可以存在脚本 该脚本就会按照时间去执行

    cd /etc
    cron.hourly/      #每小时
    cron.weekly/      #每周
    cron.daily/      #每天
    cron.monthly/      #每月
    

    6、删除超过一个月不使用的文件

    cat /etc/cron.daily/tmpwatch
    

    7、crontab服务管理:

    查软件是否已安装:rpm  -q  crontabs
    查软件的文件列表:rpm  -ql  crontabs
    查软件的配置文件列表:rpm -qc crontabs
    服务状态:systemctl   status   crond       注:d是daemon守护进程
    重启at服务: systemctl   restart   crond   或  service   crond  restart
    关闭at服务: systemctl   stop   crond   或  service   crond  stop
    开机不启动at服务: systemctl   disable  crond 或 chkconfig   crond  off
    开机启动at服务:  systemctl   enable   crond  或 chkconfig   crond  on
    

    8、cron权限管理

    /etc/cron.allow      白名单:只允许在此名单内的用户使用crontab(此文件本身不存在)
    /etc/cron.deny      黑名单:在此名单内的用户不可以使用crontab
          注:两个文件都不存在,只有root用户可以使用crontab
                 两个文件都存在,allow优先执行
    

    本博客参照编写☞博客:https://blog.csdn.net/qq_34889607/article/details/78635141

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    NOIP 模拟 $94; m 超级加倍$
    NOIP 模拟 $94; m 欢乐豆$
    NOIP 模拟 $94; m 叁仟柒佰万$
    NOIP 模拟 $94; m 开挂$
    NOIP 模拟 $92; m 优美的旋律$
    NOIP 模拟 $92; m 翻转游戏$
    NOIP 模拟 $92; m 石子合并$
    NOIP 模拟 $90; m 校门外歪脖树上的鸽子$
    NOIP 模拟 $90; m 混乱邪恶$
    NOIP 模拟 $90; m 快速排序$
  • 原文地址:https://www.cnblogs.com/suixinnan/p/14505380.html
Copyright © 2020-2023  润新知