关于计划任务 

       作为系统管理员,很多时候我们需要进行很多重复的工作,比如每天开机自动启动一些服务,定期清理系统垃圾文件等等。所以如果可以创建计划任务,我们就可以按需有计划的执行重复的工作,为自己省下不少时间,也可以避免一遍遍执行时的出错率。

       linux下实现计划任务主要有以下几种方法:at命令batch命令cron服务以及anacron。

     at:指定一个时间执行一个任务 (适用一个或多个任务,执行一次后就不用)----batch类似at,只是在系统空闲时执行而以。

cron:根据一个时间表自动执行任务 (使用一个或多个任务,周期性执行)

anacron:在一个指定时间间隔错过后自动执行任务

下面我们就来看一下如何实现。

① at:

  格式:at  时间


例如#at  now+3min   ----------》进入at编辑模式,并指定3分钟后执行计划任务

   在编辑模式输入计划任务命令,多命令<enter>操作,最后Ctrl+D键结束

at也有许多选项,常用的有

-l:列出未执行的任务(等同于atq命令)

-d:删除还未执行的额任务(等同于atrm命令)

还可以进入到/var/spool/at目录里把计划任务删除,计划任务的文件都保存在该目录里,可以用rm -f 文件名来删除(以文件的形式删除计划任务,因为计划任务是以文件形式保存在该目录中)

② cron

   cron作为一个服务,必须先启动后才可以使用;所以必须安装vixie-cron-version软件包,之后启动服务:service  crond start

使用corntab 命令定义cron任务。corntab 又分为系统和用户级别,我们主要定义用户级别

#crontab  -----------》定义计划任务

   -e :打开并编辑计划任务 (Crontab –e 编辑的任务不要加入用户名,默认为当前用户建立计划任务)

  -l: 列出所有计划任务

  -r:删除所有计划任务

  -u:指定为某用户建立计划

其实执行crontab是在/var/spool/cron/下建立了以用户名命名的文件,里面写入的即时你手动执行crontab的内容,所以也可以通过手动建立这个文件的方式指定计划任务

crontab输入的命令格式为: * * * * * command,例如:

*/5 * * * * ping -c1 192.168.0.155----------》每隔5秒执行 ping -c1 192.168.0.155。

前5段分别代表分,时,天,月,周即:


第一个*星号代表个小时的第几分钟:minute 范围是从0-59

第二个*星号代表每天的第几个小时:hour 范围是从0-23

第三个*星号代表每月的第几个日:day-of-month 范围从1-31

第四个*星号代表没年的第几个月:month-of-year 范围从1-12

第五个*星号代表每周的星期几:day-of-week 范围从0-6,其中0表示星期日

* :匹配对应时间段上的所有时间

/ : 匹配对应时间域上没隔多久的时间

- : 匹配任意段连续时间

,:匹配时间域上不连续的时间

例如:25 * 10 9 * ls var/spool/cron   ---------》9月10号25分执行ls查看var/spool/cron 目录

            5  6 * * *   /usr/bin/updatedb   ---------》每隔6小时更新locate命令的数据库

     另外cron服务时有ACL的,由/etc/cron.allow /etc/cron.deny两个文件具体定义 ,默认只有root才可以定义cron计划任务                        

/etc/cron.allow :仅允许此文件内的用户建立计划

/etc/cron.deny : 仅拒绝此文件内用户建立计划     (若cron.allow存在,忽略此文件)

③ anacron: 对cron的补充,他可以让一些因为关机而错过执行的任务在开机后继续执行,配置文件为/etc/anacrontab,其内容形如:

 1      20        cron.daily                  /etc/cron.daily   ---------->对于超过1天未执行的任务,在下次开机20分钟后执行

 

好了,简单讲到这里吧,大家慢慢练习!