cronon,cron有哪两种配置文件
作者:南北南北
出发地:LinuxSir。(同organic)有机
在Linux操作系统中,规划任务通常由cron承担。了解或掌握cron可以给我们管理服务器带来更多的便利,节省更多的时间。本文也给出了一些简单明了的例子,以方便新手上路;
目录
1.计划任务概述;
2、cron
2.1 cron的安装和启动;
2.1.1安装由RPM包管理的系统,如Redhat或Fedora
2.1.2软件系统中的安装;
2.1.3启动、停止和重启cron的方法;
2.2 cron配置文件;
2.2.1全局配置文件;
2.2.2 cron配置计划任务的编写格式。
2.2.3多个任务同时执行的定义方法;
2.2.4用户自己的cron配置文件的描述;
3.计划任务的适用范围;
4.关于这篇文章;
5.后记;
6.参考文件;
7.相关文件;
主体
1.计划任务概述;
任务是在约定的时间进行计划的工作,这是表面的。在Linux中,我们经常使用crond server来做这件事。Cron服务器可以根据配置文件中规定的时间执行特定的任务。比如我们可以在配置文件中规定每天凌晨4: 00重启httpd服务器,这是一个调度任务;
先说cron第一;
2、cron
在Linux系统中,规划任务通常由cron承担,我们可以设置cron在引导时自动启动。cron启动后会读取其所有的配置文件(全局配置文件/etc/crontab,以及每个用户的调度任务配置文件),然后cron会根据命令和执行时间按时调用工作任务。
2.1 cron的安装和启动;
一般情况下,cron是默认安装的,所以要学会检查软件包是否已经安装。
2.1.1安装由RPM包管理的系统,如Redhat或Fedora
确定系统是否安装了与cron相关的软件包。
Dora 5.0系统的情况;
Fedora和Redhat系统的其他版本与此类似;
[root @ localhost ~]# rpm-QA grep cron
vixie-cron-4.1-54。FC5
阿纳克朗-2.3-36.1
crontabs-1.10-7.1
Vixie-cron软件包是cron的主程序。可以通过以下命令了解一下,其他软件包也一样。
[root @ localhost Bei nan]# rpm-QL vixie-cron
Crontabs软件包是一个用于安装、卸载或枚举用于驱动cron守护进程的表的程序。Cron守护进程检查crontab文件,以查看指定命令的预定执行时间。如果命令已经被调度,守护进程将执行它们。要知道crontabs软件包中安装了什么,应该使用以下命令;
[root @ localhost beinan]# rpm-QL crontabs
如果没有,可以从光盘中找到文件名中带有cron的软件包进行安装。
[root @ localhost ~]# rpm-IVH vixie-cron-4.1-54。FC5*
[root @ localhost ~]# rpm-IVH crontabs *
也可以用yum在线安装;
[root@localhost ~]# yum安装vixie-cron
[root@localhost ~]# yum安装crontabs
2.1.2软件系统中的安装;
在Slackware中,cron软件包是dcron,可以在光盘中找到并安装。
检查是否安装了dcron软件包。你可以这样检查。这里可以列出软件包的详细安装情况;
[root @ localhost ~]# more/var/ADM/packages/dcron *
如果没有,请使用下面的命令安装它。在第一张安装盘中找到dcron软件包;
[root @ localhost ~]# install pkg dcron *。图斯特拉古铁雷斯
2.1.3启动、停止和重启cron的方法;
修改cron配置文件后,如果希望新文件生效,必须重新cron服务器。有两种方式可以选择;
第一种是在由RPM包如Fedora或Redhat管理的系统中;
[root @ localhost ~]#/etc/init . d/crond start
[root @ localhost ~]#/etc/init . d/crond stop
[root @ localhost ~]#/etc/init . d/crond restart
如果你想克隆Fedora和Redhat中的发行版或者基于这些发行版,如果你想自动启动运行,请使用以下方法;
[root @ localhost ~]# chkconfig-levels 35 crond on
第二种:通用
[root@localhost ~]# pgrep crond注意:判断crond是否运行;
[root @ localhost ~] # pkill cron注意:杀死正在运行的cron;
[root@localhost ~]# pgrep crond注意:查看是否已被杀;
[root @ localhost ~]#/usr/sbin/crond注意:运行crond;
2.2 cron配置文件;
Cron是一个服务器程序。我们都知道Linux服务器的配置大多是通过配置文件来完成的,cron也不例外。它的全局配置文件是Redhat/Fedora等系统中的/etc/crontab。在Slackware系统中,全局文件是/var/spool/cron/crontabs/root。每个用户也有自己的cron配置文件,我们可以通过crontab -e编辑它;
2.2.1全局配置文件;
以下是全局配置文件示例,以Fedora Core 5为例;
[root @ localhost ~]# more/etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
#运行零件
1 * * * *根运行-零件/etc/cron .每小时
#
2 4 * * *根运行-零件/etc/cron.daily
#
每周22次4 * * 7根运行零件/etc/cron
#
42 4 1 * *根运行-零件/etc/cron .每月
#
0,5,10,15,20,25,30,35,40,45,50,55 * * * * root/usr/bin/mrtg/etc/mrtg/mrtg . CFG
对于全局配置文件,我们需要使用root权限来更改它,通常是通过crontab-e-e。但有时情况并非如此。比如Fedora Core 5被crontab -e修改,就是root用户的cron配置文件。所以我们想修改Fedora Core 5中的全局配置文件,可以用vi编辑器修改。vi的用法请参考:《文件编辑器 vi》。
在全局配置文件中,可执行命令的path环境变量,使用的SHELL类型的定义等。被定义,并且这些中的大多数不需要被修改;我们经常添加的是计划任务或者修改任务的执行时间等。
在全局配置文件中,我们发现类似这样的行;
1 * * * * root run-parts/etc/cron . hourly注:表示每小时的第一分钟启动/etc/hourly目录下的可执行程序或脚本;
2 * * * root run-parts/etc/cron.daily注意:表示每天4: 2启动/etc/cron . daily目录下的可执行程序或脚本;
24 * * 7根run-parts /etc/cron.weekly注:每年第7周的4: 00,我开始执行/etc/cron.weekly目录下的可执行程序或脚本;
2 4 4 1 * * root run-parts/etc/cron.monthly注意:每月1日4: 42会执行/etc/cron . monthly目录下的可执行程序或脚本;
这些线路用于同时批量执行任务。我们将在以后的例子中单独解释它们。在这里,我们只是想让大家心中有数。
2.2.2 cron配置计划任务的编写格式。
分钟、小时、天、月、周[用户名]命令
描述:
第一段应该定义为:分钟,意思是每小时要执行的分钟。范围从0到59。
第二段应该定义为:小时,表示要执行的小时数,范围是0到23。
第三段应该定义为:date,表示每个月的日期,范围从1到31。
第四段应该定义为:month,表示每年要执行的月份,范围从1到12。
第五段应该定义为:week,表示每周的某一天,范围从0到6,其中0表示星期日。
六段中的每一段都要定义为:用户名,即应该由哪个用户来执行程序,一般可以省略;
第7段应定义为:要执行的命令和参数。
注意:用户名可以省略。用户名定义了哪个用户被用来执行程序,比如mysql server。我们可以把它定义为mysql用户的启动、停止和重启。这时候就要写用户名了。但是,这对cron来说意义不大,因为每个用户都有自己的cron配置文件。有些程序必须由root启动,所以我们可以修改root的cron配置文件。在每个用户的配置文件中,没有必要指定用户名。
我们可以在全局配置文件中编写计划任务。如果您想在全局配置文件中放置一个计划,您必须更改对应于发行版的cron全局配置文件。比如Fedora 5的全局配置文件是/etc/crontab文件;
每个用户还可以定义自己的cron配置文件,该文件由crontab -e命令定义;
比如:让机器每天八点半重启;
大约时间格式有7个字段。我们可以直接更改或者添加,当然这是系统任务调用。例如,如果我每天早上8: 30重启机器,我可以在
在/etc/crontab中添加以下两句话。第一句是评论。以#开头,写一个可以知道这个任务是什么的备注。
#重新启动操作系统
30 8 * * * root /sbin/reboot
第一段应该定义为:分钟,意思是每小时要执行的分钟。范围从0到59。
第二段应该定义为:小时,表示要执行的小时数,范围是0到23。
第三段应该定义为:date,表示每个月的日期,范围从1到31。
第四段应该定义为:month,表示每年要执行的月份,范围从1到12。
第五段应该定义为:week,表示每周的某一天,范围从0到6,其中0表示星期日。
六段中的每一段都要定义为:用户名,即应该由哪个用户来执行程序,一般可以省略;
第7段应定义为:要执行的命令和参数。
通过对比上面的例子,我们知道30分钟不是?是8个小时?如果有一个地方用*表示,表示全部,也就是说每个月,每天,每周。Root的意思是root用户执行,命令是/sbin/reboot,即每天8: 30系统重启;
我们可以将每天8: 30重启的调度任务写入cron全局配置文件,或者在root用户自己的cron配置文件中定义。如果在root中定义了自己的配置文件,请以root身份执行crontab -e来修改配置文件;Crontab -e进入修改配置文件的过程,其实和vi的用法一样。请参考vi: 《文件编辑器 vi》的用法。
使配置文件生效:如果要使配置文件生效,就必须重启cron。记住,由于每个用户下的cron配置文件都被修改。还要重新启动cron服务器。
在Fedora和Redhat中,我们应该使用;
[root @ localhost ~]#/etc/init . d/crond restart
如果允许crond在启动时运行,就要改变它的运行级别;
[root @ localhost ~]# chkconfig-levels 35 crond on
在Slackware中,打开就会自动运行;
检查/etc/rc.d/rc。m文件有以下几行;如果没有,添加它们;大部分是这样的;
# Start crond(狄龙的crond):
if[-x/usr/sbin/crond];然后
/usr/sbin/crond-L10/var/log/cron 2 1
/cdoe
b
如果希望cron立即重启,也可以使用以下方法;
/b
密码
[root@localhost ~]# pgrep crond注意:检查crond服务器是否在运行;
2022
[root@localhost ~]# pkill crond注意:杀死crond;
[root@localhost ~]# pgrep crond注意:检查crond是否存在;
[root @ localhost ~]#/usr/sbin/crond注意:启动crond;
[root@localhost ~]# pgrep crond注意:查看crond是否已经可以运行;
3883
2.2.3多个任务同时执行的定义方法;
我们前面说过,在全局配置文件中,有如下这样的段落;
1 * * * * root run-parts/etc/cron . hourly注:表示每小时的第一分钟启动/etc/hourly目录下的可执行程序或脚本;
2 * * * root run-parts/etc/cron.daily注意:表示每天4: 2启动/etc/cron . daily目录下的可执行程序或脚本;
24 * * 7根run-parts /etc/cron.weekly注:每年第7周的4: 00,我开始执行/etc/cron.weekly目录下的可执行程序或脚本;
2 4 4 1 * * root run-parts/etc/cron.monthly注意:每月1日4: 42会执行/etc/cron . monthly目录下的可执行程序或脚本;
比如我想每天5: 10重启httpd服务器。同时,我们也可以下载一个ISO文件。如果按照写计划任务的规则一个一个写,再加到全局上,就有点麻烦了。最好写个脚本放在/etc/crond.daily目录下。然后将其权限设置为755(权限设置请参考:《Linux 文件和目录的属性》)。
当然,我们要把上面那行用/etc/cron.daily改成下面的;
10 5 * * *根运行-零件/etc/cron.daily
/cdoe
然后我们转到/etc/crond.daily目录创建两个文件,一个用于重启httpd服务器,如下所示;
密码
[root @ localhost cron . daily]# touch httpd . sh
[root @ localhost cron . daily]# chmod 755 httpd . sh
[root @ localhost cron . daily]# echo /etc/init . d/httpd restart httpd . sh
[root @ localhost cron . daily]# more httpd . sh
/etc/init.d/httpd重新启动
如果我想每天5: 20下载FC5的镜像,我可以创建另一个文件fc5down.sh
[root @ localhost cron . daily]# touch fc 5 down . sh
[root @ localhost cron . daily]# chmod 755 fc 5 down . sh
[root @ localhost cron . daily]# echo /usr/bin/wget http://mirrors . kernel . org/fedora/core/5/i386/iso/FC-5-i386-DVD . iso fc5 down . sh
[root @ localhost cron . daily]# more fc5 down . sh
/usr/bin/wget http://mirrors . kernel . org/fedora/core/5/i386/iso/FC-5-i386-DVD . iso
那我们重启crond吧;
[root @ localhost cron . daily]# pkill crond
[root @ localhost cron . daily]# prep crond
[root @ localhost cron . daily]# crond
注:我只是想说明一下,同时执行多个预定任务的简单用法并不是为了教你每天早上下载FC5的镜像。我举这个例子是为了让初学者理解这个函数。如果您在某个时间有许多任务要执行,请编写自己的脚本文件。放在/etc目录下的cron.hourly、cron.daily、cron.weekly和cron.monthly目录下。放置在这些目录中的所有可执行脚本都可以在约定的时间内准确执行。每个目录都有每个目录的用途;
2.2.4用户自己的cron配置文件的描述;
每个用户都有自己的cron profile,可以通过crontab -e进行编辑,一般在Fedora和Redhat的发行版中,我们编辑完用户的cron profile后,系统会自动保存到/var/spool/cron/目录中,文件会以用户名命名。在Slackware中,它位于/var/spool/cron/crontabs/目录中。其他分布也差不多,有点类似。自己找;查看用户的预定任务是crontab -l l。
注意:编辑用户的cron配置文件;
Crontab -l注意:查看用户的计划任务;
比如我用北南用户运行crontab-e;
[beinan@localhost ~]$ id注意:判断所用用户的身份;
uid=500(北南)gid=500(北南)组=500(北南)
[beinan@localhost ~]$ crontab -e注意:编辑用户beinan的计划任务;
我们在其中定义了一个任务;
40 20 * * */usr/bin/wget http://mirrors . kernel . org/fedora/core/5/i386/iso/FC-5-i386-DVD . iso
退出后,我们使用以下命令查看北南用户的已调度任务;
[beinan@localhost ~]$ crontab -l
40 20 * * */usr/bin/wget http://mirrors . kernel . org/fedora/core/5/i386/iso/FC-5-i386-DVD . iso
配置后,我们必须重启crond服务器,并且每个用户的cron配置文件的更改都必须重启crond服务器;前面已经说过了,这里省略;值得注意的是,要重启crond服务器,您需要root权限。您可以使用su命令切换到root用户,然后重新启动crond。
在由RPM包(如Fedora或Redhat)管理的发行版中;
[beinan@localhost ~]$ su
密码:
[root @ localhost Bei nan]#/etc/init . d/crond restart
阻止克朗德:[好]
启动crond:[好]
也可以先杀死crond,然后运行crond命令启动;
[root @ localhost beinan]# pkill crond
[root @ localhost beinan]# pgrep crond
[root @ localhost Bei nan]#/usr/sbin/crond
[root @ localhost beinan]# pgrep crond
6664
3.计划任务的适用范围;
任务是让系统自动完成一些工作。比如我们可以让系统在某个时候自动清理或者备份httpd服务器的日志,然后重启httpd服务器,这对于网络管理员来说非常重要。你也可以让系统自动清空位于/tmp目录下的垃圾文件。
还值得一提的是,LinuxSir.Org有许多分站,每个分站都有RSS,使这些站的RSS能够相互传递。也是cron做的,比如这个任务凌晨4点左右开始。这是一个极其耗费资源的过程,如果不在人少的时候上线,几乎无法完成,所以只能在早上进行。作为SIR的管理员,不可能每天早上4点起床,点点鼠标就把这些事情做完。所以最好的办法就是通过cron自动运行,这样在服务器空闲的时候完成这项工作;
4.关于这篇文章;
这篇文章是关于计划任务的。本来想把所有关于规划任务的内容都写在一个文档里。因为在写文档之前没有准备好,所以只写了一个cron。这篇文章可能会在不久的将来进行调整,以包括at和其他工具的使用;
5.后记;
没必要写这个后记。我在修改这个文档的时候写了过程管理的文档。
有个有趣的事情要提一下。昨天查了一下lumaqq.inuxsir.org的谷歌广告收入,目前大概是70美元左右。目前,我代表露玛兄弟管理这个广告账户。现在广告好像少了。从一月份到现在,半年过去了,才70块钱。
6.参考文件;
7.相关文件;
Linux基础知识服务器发布于2006年5月9日-16: 51。如需评论,请先登录或注册。
好像有错?
在2.2.3,22 4 * * 7根run-parts /etc/cron.weekly注:每年第7周的4点,我开始执行/etc/cron.weekly目录下的可执行程序或脚本;
似乎是:
24 * * 0 root run-parts/etc/cron.weekly注:每周日4: 00,我开始执行/etc/cron . weekly目录下的可执行程序或脚本;
由LinuxSir于2006年6月27日00:24发布。要评论,请先登录或注册。
回复:好像有错?
24 * * 7中的2 ^ 7是指每周日执行,而不是每年的第七周,对吗?
Ps:在这里,7和0是一个意思!
由LinuxSir于2006年7月13-17: 56发布。要评论,请先登录或注册。
在http://www.linuxsir.org/main/node/209重印
*/2 * * * *根..#每两分钟.
6,12,18 * * *根..#在每天的6: 00、12: 00和18: 00执行。.
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。