Linux下的crond与crontab

来源:互联网 发布:韩国女装品牌 淘宝 编辑:程序博客网 时间:2024/05/29 14:19

一、概念

1. 定义

        crond 是 Linux 系统用来定期执行命令或指定程序的服务的一种服务或软件。一般情况下当我们安装完成 linux 操作系统之后,默认便会启动 Crond 任务调用服务。Crond 服务会定期(默认一分钟检查一次)检查系统中是否有要执行的任务工作。如果有,便根据其预先设定的定时任务规则自动执行该定时任务工作。这个 Crond 定时服务就像闹钟。 

        crontab是用于设置周期性被执行的指令,该命令从标准输入设备读取指令,并将其存放于 crontab 文件中,以供之后读取与执行。 

        crond 是 crontab 的守护进程。

2. 功能

        crond 定期来执行一些系统任务,可以在无需人工干扰的情况下运行一些作业。

        crontab 在一定的时间间隔调度一些命令执行。

 注:crond 和 cron 是一样的。

3. 区别


        cron 服务每分钟不仅要读一次 /var/spool/cron 内的所有文件,还需要读一次/ etc/crontab。因此配置这个文件也能运用 cron 服务做一些事情。

        crontab 的配置是针对某个用户的,而编辑/ etc/crontab 是针对系统的任务。

二、用法 

1. crond

crond 是 Linux 的内置服务,但是不自动起来,需要采用以下方法:


(1)  /sbin/service crond start   启动服务

(2)  /sbin/service crond stop    关闭服务

(3)  /sbin/service crond restart   重启服务

(4)  /sbin/service crond reload   重新载入配置


2. crontab


1)命令行格式:


(1) crontab [-u user] [file]
(2) crontab [-u user] [-e|-l|-r]
(3 crontab -l -u [-e|-l|-r]


2)参数解析:


-e:执行文字编辑器来设定时刻表,内定的文字编辑器是 vi,如果需使用其他文字编辑器,就需要设定 VISUAL 环境变量来指定使用哪一个文字编辑器。 

-r:删除目前的日程表 

-l:列出目前的时刻表 
-v:列出用户 cron 作业状态


3)crontab 文件:


        crontab 文件里的每一个请求必须包含以 spaces 和 tabs 分割的六个域。前五个字段可以取整数值,指定何时开始工作,第六个域是字符串,称为命令字段,其中包括了crontab 调度执行的命令1~5个字段的整数取值范围及意义。


(1)时刻表的格式:

 


第一字段:0~59 -- 分钟

第二字段:1~24 -- 小时

第三字段:1~31 -- 天

第四字段:1~12 -- 月份

第五字段:0~6 -- 星期


在以上各个字段中,还可以使用以下特殊字符:


星号(*):代表所有可能的值,例如月份字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-5”表示“2,3,4,5,”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在分钟字段,表示每十分钟执行一次。


(2)使用方法: 

        用 vi 编辑一个文件 cornfile,然后在这个文件中输入格式良好的时刻表。编辑完成后,保存并退出。然后在 root 模式下命令行输入: crontab cornfile ,这样就将 cornfile 文件提交给 cron 进程,同时新创建 cronfile 的一个副本已经被放在 /var/spool/cron目录中,文件名就是用户名。 

三、测试用例