一、 CentOS安装Crontab

[root@CentOS local]# yum install vixie-cron crontabsSetting up Install ProcessPackage cronie-1.4.4-7.el6.x86_64 already installed and latest versionPackage crontabs-1.10-33.el6.noarch already installed and latest version[root@CentOS local]# chkconfig --level 35 crond on[root@CentOS local]# service crond restartStopping crond:                                            [  OK  ]Starting crond:                                            [  OK  ][root@CentOS local]# service crond statuscrond (pid  1144) is running...Usage: /etc/init.d/crond {start|stop|status|restart|condrestart|try-restart|reload|force-reload}

二、Crontab使用方法

功能说明:设置计时器。语  法:crontab [-u 
<用户名称>
][配置文件] 或 crontab [-u
<用户名称>
][-elr]补充说明:cron是一个常驻服务,它提供计时器的功能,让用户在特定的时间得以执行预设的指令或程序。只要用户会编辑计时器的配置文件,就可以使用计时器的功能。参  数: -e  编辑该用户的计时器设置。 -l  列出该用户的计时器设置。 -r  删除该用户的计时器设置。 -u
<用户名称>
 指定要设定计时器的用户名称。基本格式 :* *  *  *  *   command分 时 日 月 周  命令第1列表示分钟1~59 每分钟用*或者 */1表示第2列表示小时1~23(0表示0点)第3列表示日期1~31第4列表示月份1~12第5列标识号星期0~6(0表示星期天)第6列要运行的命令

在crontab中我们会经常用到* , - /n 这4个符号,画个表格看起来会更清楚些:

下面举一些例子来加深理解:

每天凌晨3:00执行备份程序:0 3 * * * /root/backup.sh每周日8点30分执行日志清理程序:30 8 * * 7 /root/clear.sh每周1周5 0点整执行test程序:0 0 * * 1,5 test每年的5月12日14点执行check程序:0 14 12 5 * /root/check每晚18点到23点每15分钟重启一次php-fpm:*/15 18-23 * * * /etc/init.d/php-fpm需要注意的是crontab -l只显示当前用户的周期性任务,如果你是一个管理员你需要显示其他用户的管理性任务,你需要使用crontab -u username -l来显示其他用户的周期性任务。并且你通过配置/etc/crontab和/etc/cron.d所产生的周期性任务是没有办法用crontab -l来显示的。crontab -r用于删除周期性的任务。

注意:

  当程序在你所指定的时间执行后,系统会寄一封信给你,显示该程式执行的内容,若是你不希望收到这样的信,请在每一行空一格之后加上 > /dev/null 2>&1 即可。

例如:

[root@localhost ~]# vi /etc/crontabSHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=rootHOME=/# For details see man 4 crontabs# Example of job definition:# .---------------- minute (0 - 59)# |  .------------- hour (0 - 23)# |  |  .---------- day of month (1 - 31)# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# |  |  |  |  |# *  *  *  *  * user-name command to be executed0 1  * * * root /usr/sbin/ntpdate ntp.sjtu.edu.cn && /sbin/hwclock -w > /dev/null 2>&1

下面列举一些大家容易绕晕的例子:

这些都是每分钟:* */1 * * * root /usr/sbin/ntpdate 1.1.1.1*/1 * * * * root /usr/sbin/ntpdate 2.2.2.2* * * * *   root /usr/sbin/ntpdate 3.3.3.3这是每半个小时:*/30 * * * * /usr/sbin/ntpdate 8.8.8.8 0,30 * * * *  /usr/sbin/ntpdate 8.8.8.8每个小时里的第30分钟:30 * * * * /usr/sbin/ntpdate ntp.sjtu.edu.cn0 */1 * * * /usr/sbin/ntpdate 8.8.8.8    这是每个小时0分0 */2 * * * /usr/sbin/ntpdate 8.8.8.8    这是每两个小时0分能整除2的小时里的每分钟:* */2 * * * /usr/sbin/ntpdate ntp.sjtu.edu.cn0 8-12/2 * * *  /usr/sbin/ntpdate 8.8.8.8    这是每天早上8点-12点之间,每两个小时0分的时候执行一次。

每个月的1号-20号之间的每个周五的晚上2点重启apache服务,大家试试写写?