一、 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服务,大家试试写写?