Chinaunix首页 | 论坛 | 博客

分类: LINUX

2011-11-08 23:28:21

linux实现任务计划的命令有三个:at,batch,crond

 

  at: 在未来的某个时间点定期执行一次任务(可以是一条或者多条命令组合,可以是一个脚本)

at的使用非常方便灵活,at后面可以跟各种各样的时间格式,如:

 

  at 18:00pm July 9
  at 6 pm Monday
  at 2:00
  at noon + 5 minutes(具体可以使用的时间格式可以#man at来查看文档)

在命令行输入上面任意一种格式之后,回车可以在之后的at>提示符下输入任务指令,完成后Ctrl+D存盘退出。例如:

  At  now+5min                                       //设定任务计划时间

  At>                                                      //命令输入处

  At>                                                      //命令输入处

  Ctrl+d                                                  //提交计划

 

另外at可以使用的options还有:

  #at  -d 作业号                                      //删除计划任务

  #at  -l                                                   //列出计划任务

 

默认情况下,任何用户都可以使用at服务,但这样是不安全的。
如果系统中存在at.allow,则只有列在文件中的用户才可以使用at服务。
如果系统中存在at.deny,则列在文件中的用户不可以使用at服务,其他用户可以

 

总的来说at在实际使用的过程中使用的不是很多,所以这里不做过多介绍

 

..................................................................

 

 

   batch :at一样也是定期执行的命令,使用方法也跟at相同,但是不同的是batch不需要指定时间,因为它会自动在系统负载比较低的时候执行(平均负载小于0.8的时候)

 

...................................................................................................................

 

 

   crond : 它不同于以上命令的原因就是它是一个“周期性”执行的命令,就是循环执行。另外crond 是一个服务,所以我们在使用之前要检查其是否正在运行

 

   #service crond  status                           //检测crond服务是否运行的命令

 

  crond分为两类:

     系统cronà跟用户无关的操作系统级别的cron,它是为了维护系统能够正常运行,它所有的任务都定义在/etc/crontab文件当中

     格式:  *    *    * *   *   *    *

     *表示:   min :0-59

               hour:0-23

                 day:1-31

                 month:1-21

                 week:0-7

                 username:执行计划任务的用户         //这一点是跟用户cron不一样的地方

                 command:命令

 

    用户cronà任务的定义在/var/spool/cron/USERNAME(文件名将会以用户的名字命名)

   格式: *   *   * *   *  *

     *代表:  min :0-59

                   hour:0-23

                   day:1-31

                   month:1-21

                   week:0-7

                   command:命令

 

  crond计划任务下的命令有: 

                    crontab  –e                               //开始编辑定义自己的任务执行计划

                    crond  -r                                  //删除自己定义的执行计划

                    crond  -l                                   // 列出定义的计划任务

                    crond  -e  redhat                        //帮助redhat用户制定任务计划

 

    还有一点要注意的是:

  crond计划任务里面的命令有时候可能不会执行,因为这个文件里的环境变量PATH跟系统PATH不太一样,它的PATH的默认值为PATH=/sbin:/bin:/usr/sbin:/usr/bin,所以这就造成很多命令不能使用,所以解决的办法有两个,可以自己设定PATH环境变量,也可以用命令的绝对路径,比如ls 我们可以使用

 /bin/ls  -l  /etc/

 

  下面是具体的例子:

 

 比如:我们要在每月的3号两点十分自动执行ls  –al   /etc/

  #crond   -e                                       //开始编辑计划任务

  10  02  03  *  *  ls –al /etc/                //这是在crond  -e 打开文件后写入的内容 

 

 以下是几个特殊符号在crond中的使用 :"/"  ","  "-" 

 

  "/" 表示“每”的意思 例如:

  */5 * * * * /bin/ls –al /etc/                    //表示没五分钟执行一次命令

  10  */3  *  *  *   date                           //每三个小时执行一次命令

 

 ","表示离散时间点

  20,50  *  *  *  *  data                          //每个小时的第20分钟和第50分钟执行一次命令

 

  "-"表示“到”的意思,用于时间段

  00  00 *   *  1-5  data                          //表示每周一到周五的凌晨时间执行命令

 

  但是crond有一个缺点就是它是为服务器设计的命令,所以它默认就是认为系统会7X24小时开机,但是实际情况我们如果在笔记本上装linux操作系统不可能不关机,所以如果在计划的时间点我们关机了,那么这个任务就不会再执行了,因此为了弥补这个缺陷,产生了anacron命令

 

.............................................................................

 

  

  要使用 anacron 服务,你必须安装了 anacron RPM 软件包,而且 anacron 服务必须在运行。要判定该软件包是否被安装,使用 rpm -q anacron 命令。要判定该服务是否在运行,使用 /sbin/service anacron status 命令。

 

    配置 anacron 任务

   anacron 任务被列在配置文件 /etc/anacrontab 中。文件中的每一行都代表一项任务,格式是:

  格式:Period  delay  job-identifier  command

 

  解释:Period          超出时间

              delay            开机后延迟多久执行

              job-identifier 任务描述

             command      要执行的命令

 

  对于每项任务,anacron 先判定该任务是否已在配置文件的 period 字段中指定的期间内被执行了。如果它在给定期间内还没有被执行,anacron 会等待 delay 字段中指定的分钟数,然后执行 command 字段中指定的命令。

  要启动 anacron 服务,使用 /sbin/service anacron start 命令。要停止该服务,使用 /sbin/service anacron stop 命令。推荐你在引导时启动该服务。

.....................................................linux 下计划任务的相关命令介绍完毕 ok!

 

 

 

阅读(9649) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~