emmoblin.github.com
分类: LINUX
2008-12-24 20:20:59
crontab -e 是针对用户的cron来设计的,如果是系统的例行性任务,该怎么办?是否还是需要以crontab -e来管理例行性命令?当然不需要,您只需要编辑/etc/crontab文件就可以了。需要注意的是:crontab -e的作用其实是/usr/bin/crontab这个执行文件,但是/etc/crontab是个纯文本文件,可以root的身份编辑这个文件。
基本上,cron服务的最低检测时间单位是分钟,所以cron会每分钟读取一次/etc/crontab与/var/spool/cron中的数据内容,因此,只要您编辑完/etc/crontab文件并且保存之后,crontab时设定就会自动执行。
注意:在linux下的crontab会自动帮我们每分钟重新读取一次/etc/crontab的例行工作事项,但是某些原因或在其他的unix系统中,由于crontab是读到内存中,所以在您修改完/etc/crontab之后可能并不会马上执行,这时请重新启动crond服务。
/etc/rc.d/init.d/crond restart
好了,下面看看/etc/crontab文件的内容:
vi /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root nice -n 19 run-parts /etc/cron.hourly
02 4 * * * root nice -n 19 run-parts /etc/cron.daily
22 4 * * * root nice -n 19 run-parts /etc/cron.weekly
42 4 1 * * root nice -n 19 run-parts /etc/cron.monthly
分时日月周 用户 参数设定值 参数设定值 指令段
从这个文件的内容可以看出,这个文件与输入crontab -e后的内容几乎完全相同,只是下面几个地方有所区别:
MAILTO=root:这个字段说明了当/etc/crontab文件中的例行性命令发生错误时,会将错误信息或屏幕显示的信息传递给谁?由于root无法在客户端收信,因此,可以将这个email改成自己普通用户帐号。
01 * * * * root nice -n 19 run-parts /etc/cron.hourly:在#run-parts这一行以后的命令,我们可以发现,5个数字后面接的是root,这代表执行的层级为root身份。当然,您也可以root改成其他身份,而run-parts表示后面接的是/etc/cron.hourly是一个目录内(/etc/cron.hourly)的所有可执行文件,也就是说每个小时的01分,系统会以root的身份到/etc/cron.hourly目录下执行所有可以执行的文件。系统本来就默认了这4个目录,您可以将每天需要执行的命令直接写到/etc/cron.daily中,还不需要用到crontab -e程序,很方便。
注意:基本上,/etc/crontab支持两种输入指令的方式,一种是直接以指令形式输入,一种则是以目录形式输入。
指令形式
01 * * * * test mail -s test test < /home/test/test/test.txt
用户是test,且每小时执行一次指令mail……
目录形式
*/5 * * * * root run-parts /root/runcron
建立一个/root/runcron目录,将每隔5分钟执行一次的可执行文件都写到该目录下,就可以让系统每5分钟执行一次该目录下的所有可执行文件。
这样就知道run-parts的作用了吧!此外,与crontab -e规划中不同的是,多了一个用户层级的概念。通常,我们都是以root的角度来规划例行命令的,但是总有不需要root的场合,因此可以使用这个层级来规范该程序的用户所属。
如果每个流程都在同一时间启动,那么在某个时段,系统会非常的繁忙,所以这时必须分别设定。可以这样做:
1,6,11,16,21,26,31,36,41,46,51,56 * * * * root ………… // 省略号代表命令
2,7,12,17,22,27,32,37,42,47,52,57 * * * * root …………
3,8,13,18,23,28,33,38,43,48,53,58 * * * * root …………
4,9,14,19,24,29,34,39,44,49,54,59 * * * * root …………
注意,要用","分隔时,不要带有空格。如此一来,则可以将每5分钟工作的流程分别安排在不同的时刻进行。
文章出处: