任务计划使用方法

概述

    任务计划其实就是针对未来的某一刻或者是某一周期内设置要执行的工作;

    任务计划分为两种:

        1、一次性任务:在指定的未来的某个时间点仅执行一次任务;

            命令:at batch

        2、周期性任务:根据设置的时间循环工作。

            命令:crontab

一次性工作调度

    at命令

        使用at命令时,首先其服务atd必须开启,否则无法使用此命令。

        1.png

       语法格式: at [-ldc] TIME 

        下面举例来说明at命令的用法:

        1、使用at命令来设置任务:

            2.png

           上面的命令表示:从现在起2分钟后执行ls /tmp命令,使用快捷键Ctrl+d来结束命令输入。

           at命令并不会把执行结果输出到屏幕上,而是默认给任务设置者发送邮件;每个用户被创建时系统都会默认为其创建邮箱,可以通过变量$MAIL来查看邮箱的路径,以root用户为例:

           可以看到root用户的邮箱路径

            3.png

           查看邮箱最下面的内容即为ls /tmp的结果

           4.png          

            在上面的at命令中使用 now + 2 minutes来指定时间,下面详细说明时间的表示方法:

                绝对时间:

                    HH:MM:表示在今日的HH:MM时执行任务,若设置任务时已经超过了此时间,则为明天的HH:MM执行。如:02:00。

                    HH:MM YYYY-MM-DD:表示在某年某月某日的HH:MM执行任务。如:02:00 2015-03-25。

                    HH:MM[am|pm] [Month] [Date]:表示某月某日的HH:MM执行任务。

                相对时间:

                    now + # [minutes|hours|days|weeks]:表示从现在开始再过多少时间执行任务。

                模糊时间:

                    noon:相当于12:00

                    midnight:相当于00:00

                    teatime:相当于4:00 pm

                    tomorrow:明天         

        2、查询已经设置的at任务

                5.png

                第一列为任务的编号,之所以是5和6是因为之前的at任务已经执行完成;

                第二列是任务执行的时间;

                最后一列表示任务的执行者为root。

                此命令相当于命令atq。

        3、删除已经设置的at任务

                6.png

                删除编号为5的at任务。

                此命令相当于命令atrm。

         4、查看at任务的工作内容

               7.png

            使用-c选项可以输出任务的工作脚本,其实此参数就是将/var/spool/at/目录中与任务相对应的文件显示了出来;使用at命令设置好的任务都会以/var/spool/at/目录中自动生成一个脚本文件,如下图:

                8.png

                9.png

                可以看到文件中a0000后的数字与任务编号相对应。

        5、at的权限

            at使用/etc/at.allow和/etc/at.allow两个文件来控制权限。

            1、写在/etc/at.allow文件中的用户可以才能使用at; 

            2、如果/etc/at.allow不存在,查找/etc/at.deny文件,如果写在/etc/at.deny文件中则不能使用at,否则就有使用at的权限;

            3、如果两个文件都存在,则/etc/at.allow文件生效;

            3、如果两个文件都不存在,就只有root可以使用at命令。

    batch命令

        功能与at相同,但不需要指定时间,自动选择系统空闲时运行计划任务。

周期性工作调度

    crontab命令

        使用此命令必须确保crond服务是开启状态。

        10.png

        语法格式:crontab [-u username] [-l|-e|-r]

            -e:编辑crontab的工作内容;

            -u:只有root用户才能使用此参数,帮助其它用户建立任务;

            -l:查阅crontab的工作内容;

            -r:删除crontab的所有工作内容。

       1、编辑cron任务

        在第一次使用crontab -e命令进行编辑工作时,会发现这是一个空的文件,没有任何文字可供参考,那么任务怎么写呢?

        系统提供了crontab的配置文件,打开/etc/crontab文件可以看到格式的说明:

            11.png

            文件上面的部分是定义的环境变量,这些环境变量已经在系统中都定义可以正常使用了,为什么还要在配置文件中再定义一次呢?

            由于crontab定义的是周期性任务,在运行任务时并不能保证任务发起者处于系统登录状态,如果用户退出登录后,其对应的环境变量也被相应的取消了;那么任务运行的环境($SHELL),命令查找的路径($PATH)等信息就都无法读取,会造成任务的执行失败;在任务运行前先从配置文件中读取环境变量,就可以避免此问题的发生了。

            文件下面的部分是crontab任务的格式说明,我们根据配置文件的信息来说明crontab任务的格式。

            cron任务分为两类:

                1、系统cron任务

                    格式:分钟 小时 周几 用户 任务

                2、用户cron任务

                    格式:分钟 小时 周几 任务

                  时间的有效取值范围:                  

                    分钟:0-59

                    小时:0-23

                    天:  1-31

                    月:  1-12

                    周:  0-707都表示周日

                时间通配表示:

                    * :对应时间的所有有效取值

                    ,:离散时间点, 1040 * * * * 每小时第10分钟和第40分钟

                    – :连续时间     10 02 * * 1-5  每周一到周五

                    / :对应取值范围内每多久一次   */3 * * * *   3分钟

                例如:0 5 * * 1  表示每周一的5点钟;

                      * 5 * * 1  表示每周一的5:00-5:59的每一分钟

                

                crontab的执行结果也会以邮件的形式发送到任务发起者的邮箱中。           

            注意:crontab命令使用-e选项进行编辑时,实际上就是编辑/var/spool/cron/USERNAME(当前用户名)文件,以root为例:

            5.png

            但不要直接编辑此文件进行任务订制,因为使用-e选项可以自动识别语法错误,而使用vim直接打开文件进行编辑则没有此功能。

        2、查看cron任务

            1.png

        3、为其它用户定义cron任务         

            2.png

            3.png

        4、删除所有的cron任务

            4.png

            如果想要只删除某一条的任务,使用-e选项手动删除即可。

        5、cron的权限

            与at一样,cron也使用文件来定义用户的使用权限;

            /etc/cron.allow :写入此文件的用户可以使用crontab,没有写入的用户则不可使用;

            /etc/cron.deny :写入此文件的用户不可以使用crontab,没有写入的用户则可以使用;

            /etc/cron.allow比/etc/cron.deny的优先级要高,同一账号在两个文件中同时出现时,以/etc/cron.allow为准。

        6、日志功能

            cron执行的每一项任务都会被记录到/var/log/cron这个日志文件。

            6.png

    anacron命令        

        检查有没有过去一个有效周期未曾执行的任务,如果有,在开机后的指定时间点执行一次;

        查看anacrontab配置文件

            8.png

         配置文件中任务的四个值的含义:

             period in days      delay in minutes    job-identifier    command

            过去没执行的天数    开机后第多少分钟数     工作名称         任务

         此命令在生产环境中基本用不到,此处不再进一步说明。

    

 

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

(0)
petmasterpetmaster
上一篇 2015-03-26
下一篇 2015-03-27

相关推荐

  • 网络知识点

    1. 实现异地搭建局域网的方法1>. 让运行商拉专线,这是相当昂贵的。2>.  VPN (Virtual PrivateNetwork)  虚拟专用网络 2. VPN的隧道协议主要有三种:PPTP、L2TP和IPSec。其中PPTP和L2TP协议工作在OSI模型的第二层,又称为二层隧道协议;IPSec是第三层隧道协议。 2. …

    Linux干货 2016-09-01
  • 路由以及实验

    路由 路由(routing)是指分组从源到目的地时,决定端到路径的网络范围的进程。路由工作在OSI模型第三层——网络层的数据包转发设备。路由器通过转发数据包来实现网络互连。路由器可以支持多种协议,但绝大多数使用的是TCP/IP协议。路由器通常连接两个或者多个由IP子网或者点到点协议表示的逻辑端口,至少拥有1个物理端口。路由器根据收到数据包中的网络层地址以及路…

    Linux干货 2017-05-11
  • nginx学习

    nginx    nginx的核心配置项:        Core functionality:核心配置,Glob配置段            daemon:是否开启为守护进程        &nbs…

    2017-05-08
  • bash基础特性(二)之命令别名,IO重定向,管道

    命令别名alias 别名通俗地说,叫花名,当我们常用的命令,要是输入太长,或经常要进入的目录,可以用一个别名来定义它们,定义别名时尽量不要和已有命令名相同。这样可以提高输入速度和工作效率。定义别名格式:alias 别名=’原命令 参数’ (要是没空格,可以不用引号)例如 : alias vi=vim [root@dxlcentOS ~…

    Linux干货 2017-09-24
  • bash编程之数组和字符串处理

    数组: 程序=指令+数据          指令:     数据:变量、文件 数组:存储过个元素的连续的内存空间; 变量:存储单个元素的内存空间; 数组名:整个数组只有一个名字; 数组索引:编号从0开始;   &nbsp…

    Linux干货 2016-08-24
  • 用户组和权限管理的相关命令

    1,useradd  新建用户 useradd -u uid username 创建用户时指定uid(如不指定则Centos:500-60000, Centos7: 1000-60000) -o -u uid username  创建用户时指定uid(可以与已存在用户的uid相同) -g groupname username 创…

    2017-07-25

评论列表(2条)

  • stanley
    stanley 2015-04-02 22:39

    参考其它优秀博文优化下现有的格式,有些技巧会让自己的博文更优美

    • petmaster
      petmaster 2015-04-03 00:11

      @stanley谢谢!