Linux任务计划


    任务计划分类:
    一次性任务计划:只执行一次就结束                at batch
    周期性任务计划:每隔一定的周期去做相同的事情    cron

    作业的执行结果以邮件通知给相关用户
    mail- send and receive internet mail  使用mail命令查看用户邮件

    (1)at命令:
        at [option] TIME
        option:
            -l: 列出指定队列中等待运行的作业;相当于atq
            -d: 删除指定的作业;相当于atrm
            -c: 查看具体作业任务
            -f /path/from/somefile:从指定的文件中读取任务 -m:当任务被完成之后,将给用户发送邮件,即使没有标准输出
    
        TIME:定义出什么时候进行 at 这项任务的时间
            HH:MM [YYYY-mm-dd]
            HH:MM  02:00 在今日的 HH:MM 进行,若该时刻已过,则明天此时执行任务
            HH:MM[am|pm] + number [minutes|hours|days|weeks]

        执行方式:
            1、交互式2、输入重定向3、at -f文件
            at 交互模式下是不是输错一次就要推倒重来
            不需要,ctrl+backspace 可以退格
        
        附加知识点:
        1、at队列存放在/var/spool/at目录中
        
        2、黑白名单
        白名单/etc/at.allow默认不存在
        黑名单/etc/at.deny默认存在
        只要/etc/at.allow存在,则只有该文件中的用户和root可以执行at命令(此时deny文件可以视为无效)
        如果/etc/at.allow不存在,
        1)/etc/at.deny存在,只有deny文件中的用户被拒绝执行at命令
        2)/etc/at.deny不存在,只有root用户可以执行at命令

      (2)batch命令:
          让系统自行选择空闲时间去执行此处指定的任务

      (3)cron
          相关程序包:cronie,cronie-anacron,crontabs
          确保crond守护进程处于运行状态:
          centos 7:systemctl status crond
          centos 6:service crond status

          3.1系统cron任务
          编辑/etc/crontab文件命令格式
              # 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
              例如:晚上9点10分运行echo命令:
                  10 21 * * * gentoo /bin/echo “Howdy!”

              时间表示法:
                  1、特定值
                      给定时间点有效取值范围内的值
                  2、*
                      给定之间点上有效取值范围内的所有值
                  3、离散取值:,
                      #,#,#
                  4、连续取值:-
                      #-#
                  5、在指定时间范围上,定义步长:
                      /#:#即为步长

                  示例:每3小时echo命令:
                      * */3 * * * gentoo /bin/echo “howdy!”错误
                      较小的时间范围需要指定特定的时间,否则相当于小时间范围内全部取值均执行
                      1 */3 * * * gentoo /bin/echo “howdy!”

                  @reboot     Run once after reboot.
                  @yearly     0 0 1 1 *
                  @annually     0 0 1 1 *
                  @monthly     0 0 1 * *
                  @weekly     0 0 * * 0
                  @daily         0 0 * * *
                  @hourly     0 * * * *
                  注:上面其中表达方式可以用来代替五颗星的位置

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

            crontab  [-u user] [-l|-r|-e] [-i]
                -l:列出所有任务
                -e:编辑任务
                -r:移除所有任务
                -i:同-r一同使用,交互式模式让用户有选择地移除指定任务
                注:在所有任务中去删除特定任务,也可以crontab -e打开编辑器,删除特定行即可          
                -u user:root用户专用,代为为指定用户管理cron任务

         at和crontab
           一次性作业使用at
           重复性作业使用crontab
           没有被重定向的输出会被邮寄给用户
           根用户能够修改其他用户的作业

    注意:
    1)运行结果标准输出和错误以邮件通知给相关用户;
    2)对于cron任务来讲,%有特殊用途,在命令中要使用%,则需要转义;单引号隔绝引用,使用单引号不用转义

    练习:

      1、每天的2点和12点整,将/etc备份至/testdir/backup目 录中,保存的文件名称格式为“etcbak-yyyy-mm-ddHH.tar.xz”

    mkdir /testdir/backup
    crontab -e
    0 2,12 * * * /bin/tar -Jcf /testdir/backup/etcbak-`date +'%F'`.tar.xz /etc

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

    mkdir /logs
    crontab -e
    0 0 * * 2,4,7 /var/log/messages /logs/messages-$(date +'%Y%m%d')

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

    crontab -e
    1 */2 * * * /bin/grep -E "^(S|M)" /proc/meminfo >>/meminfo.txt

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

    crontab -e
    1 * * * 1-5 /sbin/ip addr show 

    5、工作日时间,每10分钟执行一次磁盘空间检查,一旦发现任何分区利用率高于80%,就执行wall警报。

    cd /bin
    vim chkdisk.sh
    block_used=df|grep -E "^/dev/sd"|tr -s " "|cut -d" " -f5|cut -d% -f1
    inode_used=df -i|grep -E "^/dev/sd"|tr -s " "|cut -d" " -f5|cut -d% -f1
    if [ block_used -gt 80 || inode_used -gt 80 ];then
        wall disk is full
    fi
    chmod +x chkdisk.sh
    crontab -e
    */10 * * * * chkdisk.sh 

    想了一下,这种方法是有缺陷的。当多个磁盘使用率同时超过80%时,无法进行正确的判断

    注意:使用which或者whereis可以查询命令的绝对路径,用来帮助写cron任务计划。

原创文章,作者:maru,如若转载,请注明出处:http://www.178linux.com/75070

(0)
marumaru
上一篇 2017-05-08 22:58
下一篇 2017-05-09 08:12

相关推荐

  • linux 基础目录配置及用途说明

    bin -> usr/bin 一般存放root和一般用户都可以使用的指令例如:cat, chmod, chown, date, mv, mkdir, cp, bash 等等常用的指令,同时还存放着单人维护模式下还能够被使用的指令。 boot  这个目录主要放置开机会使用到的文件,包括linux核心文件以及开机选单和开机所需要的配置文件。 de…

    Linux干货 2017-08-19
  • 为什么新建文件时,所在文件系统还有大量剩余空间,却提示此文件系统空间已满??

    一:答疑解惑:    这是因为该文件所在分区的inode号被用尽,虽然分区的剩余容量还有很多。 二:基本原理:   inode为何物block又为何物?以及,inode都有哪些特征?   ①我们知道,在linux文件系统中,文件名只是计算机用来给人看,而计算机本身只识别文件所对应的数字或编号,而这个编号或数字…

    2017-07-22
  • n25_第一周作业

    1.描述计算机的组成及其功能。 主要分为五个部分: 1. 控制器(Control):是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。 2. 运算器(Datapath):运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。 3. 存储器(Memo…

    Linux干货 2016-12-01
  • 基于keepalived实现高可用nginx服务

    基于keepalived实现高可用nginx服务 环境及配置前提说明 主机1,ip:192.168.25.140 运行web服务 主机2,ip:192.168.25.141 运行web服务 主机3,ip:192.168.25.138 运行nginx服务和keepalived服务 主机4,ip:192.168.25.139 运行nginx服务和keepaliv…

    Linux干货 2016-11-07
  • 第五周学习总结–任务计划

    写在前面 随着学习的不断深入,渐渐的已经意识到不再是开始一天只知道几个简单的命令而已了,但是呢,命令还必须要继续学习的,修房子哪有不用砖的,所以,要想有一栋坚实稳固的房子,还必须静下心来继续认识命令。 命令注解 今天要讲的几个命令是跟工作息息相关的,他们都是在以后的生活中使用率比较高的命令之一,比如马上要讲的这个,如果你的老板让你在每天凌晨三点执行一次数据备…

    2017-12-29
  • Week 1 Linux Intro

    I.  Linux的各种发行版 All Kinds of Linux     在Linux诞生的20多年里,Linux衍变出了许许多多的版本,每个都有自己的名字,但它们的本质和它们的哲学观还是一样的。下面是从外网上扒下来的一张Linux进化图,跨度一直到了2016年。    &n…

    Linux干货 2016-06-26