运行linux后,开机自启动crond任务,系统会每分钟检查是否有要执行的任务工作(循环检测)

默认系统中可以登陆的用户,都可以使用crontab定义计划任务。

cron执行的每一项工作都会被纪录到/var/log/cron这个日志文件中,可以从这个文件查看命令执行的状态。


cron服务的启动关闭 

启动:service crond start 

停止:service crond stop 

重启:service crond restart 

查看状态:service crond status 

重新载入配置:service crond reload


crontab支持两种状态:

a.直接编写计划任务;(crontab -e)

b.使用目录的方式,放在目录里面的都会定时执行,定时目录可在/etc/crontab中设定。


可以通过/etc/cron.allowh和/etc/cron.deny文件限制权限,/etc/cron.allow优先于/etc/cron.deny配置,下面为Centos6.5下的测试

拒绝测试

wKiom1c0eo-BZ53JAAA7rQawduc534.png

允许测试

wKioL1c0fEOTLLEzAAAioLG0LmA610.png


crontab用法

crontab [-u user] [-e | -l | -r]  

 -e   //编辑当前用户的定时任务

 -l   //查看当前用户的定时任务

 -r   //删除定时任务

 -u       //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数 

比如说root查看自己的cron设置:crontab -u root -l 
再例如,root想删除fred的cron设置:crontab -u fred -r 

crontab –l –e都是直接操作/var/spool/cron/下当前用户名的文件


crontab命令书写格式:

*代表所有的取值范围内的数字,"/"代表每的意思,"*/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。 

 *      *     *      *     *    /bin/sh /scripts/yy.sh

 分     时     日     月     周    命令和文件路径

(00-59)  (0-23)   (1-31)   (1-12)    (0-6)         

星号每的意思

减号连续一段时间,如:00 17-19 * * * cmd  每天下午17点,18点,19点执行一次命令

逗号多个时间段,如:00 10-11,17-19 * * * cmd 每天的上午10,11点整,下午的17,18,19点整执行一次命令

/n n代表数字,指每隔n时间执行一次,如: */2 * * * * cmd 每隔2分钟执行一次命令


举例:

每天早上6点 在根目录下的my_crond文件中追加Good morning.
0 6 *  *  *  echo  "Good morning."  >>  /my_crond      //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了

每两个小时 
0  */2  *  *  *  echo  "Have a break now."  >>  /my_crond

晚上11点到早上8点之间每两个小时,早上八点 (注意逗号)
0  23-7/2,8  *  *  *  echo  "Have a good dream:"  >>  /my_crond

每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 

0  11  4  *  1-3  command line 

1月1日早上4点 
0  4  1  1  *  command line 

每天的中午12点到下午4点间,每隔2小时执行一次

30 12-16/2 * * * cmd 


日和周不能同时用,若要以月为间隔,则日或周必有一个有值


自己写了一个测试

执行crontab -e 命令可进入编辑

下面命令的意思是每周三的早上7点到晚上23点,在40分到50分的时间段里每一分钟都往文件my_crond文件中追加一句hi,Today is Wednesday,(注:my_crond文件会在当前工作目录下被创建)

wKiom1c0l7WBRTjSAAAIYq_4yBA837.png

wKioL1c0mJfAI0NmAAAKnVD3d80678.png

wKiom1c0l7aTVektAAAMzTN_cFo368.png


每次编辑完某个用户的cron设置后,cron自动在/var/spool/cron下生成一个与此用户同名的文件,此用户的cron信息都记录在这个文件中,这个文件是不可以直接编辑的,只可以用crontab -e 来编辑。cron启动后每过一分钟读一次这个文件,检查是否要执行里面的命令。因此此文件修改后不需要重新启动cron服务。 


调试定时任务

一个任务不能轻易的直接推上线上服务器,需要在测试服务器上测试好。

wKiom1c0kJfzl80rAAAl9S6Cnkg263.png