zoukankan      html  css  js  c++  java
  • linux任务计划及周期性任务计划

    相关命令:at、batch、cron、mailx

    未来某时间执行一次任务:at, batch

    周期性运行某任务: cron

    邮件相关命令: mailx

      mailx - send and receive Internet mail   

    邮件存放位置:/var/spool/mail
    常用用法: mailx [-BDdEFintv~] [-s subject] [-a attachment ] [-c cc-addr] [-b bcc-addr] [-r from-addr] [-h hops] [-A account]
            [-S vari‐able[=value]] to-addr . . .
      简单用法:mailx [-s 'SUBJECT'] username[@hostname]
             例1: # mailx -s 'hello' root@alen.ckh.centos
                 邮件内容
                 Ctrl + d //发送邮件

                # mail     //查看当前用户邮件
                & 数字#    //查看第几封邮件
                & delete #: //删除第几封邮件
                & q      //退出

             例2:# mailx -s 'SUBJECT' hadoop@alen.ckh.centos < mail.txt  //使用重定向的方式发送邮件给hadoop用户

    一、未来某时间执行一次任务:at命令

     at, batch, atq, atrm - 排队、检查或删除以后要执行的作业 

    at命令常用用法:
        at [option] TIME
            TIME:
                HH:MM [YYYY-mm-dd]: 指明时间
                noon,midnight,teatime: 中午十二点,午夜十二点,下午四点
                tomorrow
                now+#{minutes,hours,days,OR weeks}: 某段时间后
              提交作业: ctrl + D
            常用选项:
                -q QUEUE:
                -l: 列出指定队列中等待运行的作业,相当于atq
                -d #: 删除指定的作业,相当于atrm
                -c #: 查看具体某一条作业任务
                -f  /path/from/somefile:从指定的文件中读取任务
    注意: 作业的执行结果以邮件形式通知给相关用户

    batch命令: 和at命令类似,但不能指明时间点
      让系统自行选择空闲时间去执行此处指定的任务  // 很少让系统自己去选择时间执行任务

    二、周期性任务计划:cron命令

      相关程序包:

         cronie:主程序包,提供了crond守护进程及相关辅助工具

         cronie-anacron: cronie的补充程序,用于监控conie任务执行状况,如果cronie中的任务在过去该运行的时间点未能正常运行,则anacron会随后启动一次此任务

         crontabs: 包含CentOS提供系统维护任务

      确保crond守护进程处于运行状态:  

    CentOS7: systemctl status crond   //如果未运行,则运行进程:  systemctl start crond
    CentOS6: service crond status     //如果未运行,则运行进程: service crond start

      计划要周期性执行的任务提交给crond,由其来实现到点运行。   

        系统cron任务: /etc/crontab
        用户cron任务: crontab命令
    系统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
    例如: 每天晚上九点十分运行echo命令:
        10 21 * * * gentoo /bin/echo "how are you!"

    时间表示法 

    1.特定值:给定时间点有效取值范围内的值
    2.*:给定时间点上有效取值内的所有值,表示“每...”
    3.离散取值,#,#,#
    4.连续取值:#-#
    5.在指定时范围上,定义步长:/#,比如分钟上设置/3表示每3分钟执行
    例如:每3小时echo命令   0 */3 * * * gentoo /bin/echo "how"

    用户cron:

      crontab命令定义,每个用户都有专用的cron任务文件:/var/spool/cron/USERNAME

    crontab [-u user] [-l] [-r] [-e] [-i]
            -l:列出所有任务
            -e:编辑任务
            -r:移除所有任务
            -i:同-r一起使用,以交互模式让用户有选择的移除指定任务
       -u user:仅root可运行,代为为指定用户管理cron任务 注意:运行结果以邮件通知给相关用户
      1.如果任务正常执行,不想接收邮件:
        (1)COMMAND > /dev/null
         (2)COMMAND &> /dev/null
    2.命令最好使用绝对路径
      3.对于cron任务来说,%有特殊用途;如果在命令中要使用%,则需要转义;不过,如果把%放置于单引号中,也可以不用转义;
    如何在秒级别运行任务或不能被60整除的分钟执行任务:
    sleep NUMBER[SUFFIX]...  //s:秒  m:分钟  h:小时  d:天
    * * * * * for min in 0 1 2;do /bin/echo "hi";sleep 20s;done
    例1:实现每7分钟运行一次任务
    * * * * * /bin/echo "hi";sleep 7m;

    练习:

    1.每4小时备份一次/etc目录至/backup目录中,保存的文件名称格式为“etc-yyyy-mm-dd-HH..tar.xz”

    0 */4 * * * tar -Jcf /backup/etc-$(date +%F-%T).tar.xz /etc

    2.每周2,4,7备份/var/log/messages文件至/logs目录中,文件名形如“messages-yyyymmdd.tar.gz”

    0 0 * * 2,4,7 tar -zcf /logs/messages-$(date +%Y%m%d).tar.gz /var/log/messages

    3.每两小时取出当前系统/proc/meminfo文件中以S或M开头的信息追加至/tmp/meminfo.txt文件中

    0 */2 * * * cat /proc/meminfo | grep  "^[SM]" >> /tmp/meminfo.txt

    4.工作日时间内,每小时执行一次“ip addr show”命令

    0 */1 * * 1-5 ip addr show

     

  • 相关阅读:
    HDU 5775 Bubble Sort
    HDU 5763 Another Meaning
    HDU 5773 The All-purpose Zero
    HDU 5768 Lucky7
    HDU 5769 Substring
    SPOJ 705 New Distinct Substrings
    POJ 3261 Milk Patterns
    HDU 1521 排列组合 指数型母函数
    HDU 1023 Traning Problem (2) 高精度卡特兰数
    HDU 2082 母函数模板题
  • 原文地址:https://www.cnblogs.com/ckh2014/p/9569805.html
Copyright © 2011-2022 走看看