计划任务管理

    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 18:51
下一篇 2016-11-27 19:40

相关推荐

  • Linux发展史

    Linux发展史 操作系统出现前:   1946年第一台计算机诞生–20世纪50年代中期,还未出现操作系统,计算机工作采用手工操作方式。程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果;用户取走结果并卸下纸带(或卡片…

    Linux干货 2016-10-14
  • 使用Nmap扫描系统风险点

    0x00 迅速了解Nmap Nmap是一款扫描目标网络信息的工具,可以是黑客用来探测主机信息,收集情报的神器。也可以是运维人员扫描网络环境,及时发现系统漏洞的好帮手。 0x01 它的功能 1、主机发现(Host Discovery)#探测目标网络环境中有哪些主机是可以进行通信的,当然你也可以用ping命令试一下 2、端口扫描(Port S…

    Linux干货 2015-04-19
  • 搭建yum仓库的FTP服务器

    搭建centos7ftp服务

    2017-12-02
  • Bash shell 脚本编程全攻略(上篇)

    Bash shell 脚本编程全攻略(上篇)   什么是shell脚本呢? 当命令不在命令行上执行,而是通过一个文件执行时,该文件就称为shell脚本,脚本以非交互的方式运行。Shell脚本把命令通过一些语法组织起来,便能实现特定的功能。   Shell脚本主要运用在系统运维中,主要功能有: 自动化常用命令; 执行系统管理和故障排除; 创…

    Linux干货 2016-08-29
  • 上古神器之vim

    sed 前言:前面学到了文本处理三剑客之一grep,但是grep在有些时候显得力不从心,我们需要一款针对行操作的处理工具,没错,这就是sed流编辑器。 sed用法提炼: sed 's/(text1)(text2)(text3)/\1\2\3/'  vim 前言:强大的Linux如果没有一款疯狂的编辑器,常用的编辑操作会…

    Linux干货 2016-08-12
  • linux 使用者管理 (9月底)

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。     ~]#w | cut -d ' ' -f 1 |uniq -u 2、取出最后登录到当前系统的用户的相关信息。 ~]# last -1(数字1) 3、取出当前系统上被用户当作其默认shell的最多的那个shell。 ~]#…

    Linux干货 2016-10-02