关于计划任务
作为系统管理员,很多时候我们需要进行很多重复的工作,比如每天开机自动启动一些服务,定期清理系统垃圾文件等等。所以如果可以创建计划任务,我们就可以按需有计划的执行重复的工作,为自己省下不少时间,也可以避免一遍遍执行时的出错率。
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分钟后执行
好了,简单讲到这里吧,大家慢慢练习!