计划任务管理

    Linux系统计划任务有两种:A、一次性任务;B、定时循环任务。

    一次性任务:at命令。at的安装包名字就是at,可以使用命令"yum install at"进行安装.安装完成后,启用atd服务就可以运行at命令了.运行格式为:at [option] TIME

    OPTION:

      -V 显示版本信息:
      -l:
列出指定队列中等待运行的作业;相当于atq
      -d:
删除指定的作业;相当于atrm
      -c:
查看具体作业任务
      -f /path/from/somefile:从指定的文件中读取任务(要执行的命令)
      -m:当任务被完成之后,将给用户发送邮件,即使没有标准输出
       注意:作业执行命令的结果中的标准输出和错误以邮件通知给相关用户

    TIME:定义出什么时候进行 at 这项任务的时间
      HH:MM [YYYY-mm-dd]
      noon, midnight, teatime
4pmtomorrow
      now+#{minutes,hours,days, OR weeks}

      HH:MM 02:00
    在今日的 HH:MM 进行,若该时刻已过,则明天此时执行任务
       HH:MM YYYY-MM-DD 04:00 2016-09-20
    规定在某年某月的某一天的特殊时刻进行该项任务
      HH:MM[am|pm] [Month] [Date]
       04pm March 17
       17:20 tomorrow
    HH:MM[am|pm] + number [minutes|hours|days|weeks]
    在某个时间点再加几个时间后才进行该项任务
       now + 5 minutes
       04pm + 3 days

    注意:选项-t也可以指定时间:at -t TIME。其格式为[[CC]YY]MMDDhhmm。

    at队列存放在/var/spool/at目录中.创建一个计划任务,2分钟后发一个广播:

blob.png

    at命令可以通过修改配置文件来指定用户有权限或者没有权限执行。配置文件为/etc/at.deny和/etc/at.allow。其中,at.allow中的用户被允许执行at命令,at.deny文件中的用户没有权限执行at命令。两个文件如果都不存在,则只有管理员才能执行at命令。如果两个文件都有,at.allow的优先级高。 

    

     定时循环任务:crontab命令,运行格式为:crontab [-u user] [-l | -r | -e]

      -l:列出当前的计划任务列表

      -r:删除当前计划任务

      -e:创建或者编辑计划任务

    使用命令"crontab -e"编辑计划任务,编辑的格式为:

blob.png

    总共7个字段:分、小时、天、月、星期、用户、命令。例如要在每个月的第一天执行一个计划任务,可以使用"crontab -e"编辑如下字段:"* * 1 * *  reboot"。然后保存。其中,"*"代表任何时刻(天,小时,分钟,月),也可以指定具体的时间,连续的时间用"-"连接(1-10),离散的数用","隔开(1,4,10),也可以使用"/#"表示每#(分钟,小时,月,天)执行一次。时间也可以使用特殊的形式:

    @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 * * * *

    编辑完成后就可以使用命令"crontab -l"命令查看:

blob.png

    该命令是让每月的第一天重启系统。当用户使用 crontab 创建工作后,该项工作会被到/var/spool/cron/里面,而且是以账号最为判别的,crontab执行的每一项工作都会被记录到 

/var/log/cron 这个日志文件中。

blob.png

     /etc/crontab这个文件是系统默认会定时执行的系统任务,crond服务会每隔一分钟读取/etc/crontab与/varspool/cron里面的内容。文件内容如下:

blob.png

          SHELL=/bin/bash:使用的shell,

         PATH=……:定义路径到变量。

         MAILTO=root:若有额外STDOUT,以 email 将数据发送给谁,可以改成你的email地址,以便接收任务的执行信息。

其中比crontab -e 命令多了一项,便是用户名称了,因为用户执行命令会以用户身份生成配置文件,而这个文件中若是填入任务的话,系统就需要指定用户的身份了。

并且其中还支持以目录来规划任务,可以将可执行文件放在一个目录中,然后再命令处填写 run-parts(有空格)然后接上目录,即可借助run-parts这个脚本的辅助,来规划目录执行了。

其中所有的输出会以email形式,发送预设的账号,所以不必要的输出可以重定向给/dev/null 避免垃圾邮件。

其中日、月、周不可同时存在,若是同时存在,系统默认执行第一个读取到的时间做循环。

  crontab的任务都是定时循环执行,若是那个时刻处于关机状态,那么任务就无法执行了,为了弥补这个问题,就有了anacron。其能够将为能运行的crontab工作在开机之后执行。

aracron也是基于crontab来运行的,因此aracron运行的时间通常有两个,一个是系统开机期间运行,一个是写入crontab 的调度之中,这样才能够在特定的时间分析系统中未运行的crontab 工作。

blob.png

           RANDOM_DELAY=45表示启动后延时时间;

           START_HOURS_RANGE=3-22表示执行的时间段

           下面的字段分别表示执行的次数、执行的延时、作业标识符、命令

           和at命令相似,它也有两个配置文件cron.deny和cron.allow,作用一样。

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

(0)
王更生王更生
上一篇 2016-11-27
下一篇 2016-11-27

相关推荐

  • 初步了解计算机组成及Linux系统

    一、计算机的组成及其功能: 计算机主要由三部分组成: 输入单元:包括键盘、鼠标、卡片阅读器、扫描仪、手写板等。 输出单元使我们能够将一些数据输入到主机里,然后再由主机的功能处理成为图表或文章等信息后,将结果传输到输出设备,如屏幕或打印机上面。 中央处理器(CPU):其中包含算数逻辑、控制、记忆等单元。 CPU作为一个具有特定功能的芯片,里面含有微指令集,如果…

    Linux干货 2017-09-24
  • Linux文件查找之find秘笈

    前言     Linux的基本特点之一是一切皆文件,在系统管理过程中难免会需要查找特定类型的文件,那么问题来了:如何进行有效且准确的查找呢?本文将对Linux系统中的文件查找工具及用法进行详细讲解。 常用工具对比     常用的文件查找工具主要有locate(非实时查找)和find(实时查找)。locate查找依赖于索…

    2015-03-23
  • bash shell 循环语句的使用

    条件选择if语句       if语句是选择执行的,条件满足则执行,不满足则退出,if语句也可嵌套,就是if语句里面也可以在进行if语句 单分支 if 判断条件;then statement1 fi   双分支 if 判断条件;then 条件为真得分支 else 条件为假的分支 fi   …

    Linux干货 2016-08-18
  • 如何练好yum的一招一式

      工作时间越久,就越有这样一个深刻体会,一个新知识或者新的技能一个人学习起来并不会觉得吃力,反而要想把你学习的新知识或者新技能给讲清楚让普通人听得懂才是最难的,之前我写过一篇博客讲述linux下的RPM包管理器,今天写的练好yum的一招一式,同样都是都是在linux系统的软件包的安装、卸载、升级等功能的,为什么我们还需要yum那,记得一位大哲学家…

    Linux干货 2015-11-10
  • 破坏grub实验之一

    1、删除grub stage1阶段 [root@centos6 ~]# dd if=/dev/zero of=/dev/sda bs=446 count=1 1+0 records in 1+0 records out 446 bytes …

    Linux干货 2016-09-19
  • N25 – Week 5 blog

    1. 显示当前系统上root, fedora或user1用户的默认shell [root@dhcp-10-129-6-166 ~]# grep -E "root|fedora|user1" /etc/passwd | grep -o "[^…

    Linux干货 2016-12-27