您的位置:首页 > 运维架构 > Linux

Crontab在CentOS下的使用简介

2012-07-19 11:40 337 查看
一、 CentOS安装Crontab

[root@CentOS local]# yum install vixie-cron crontabs
Setting up Install Process
Package cronie-1.4.4-7.el6.x86_64 already installed and latest version
Package crontabs-1.10-33.el6.noarch already installed and latest version
[root@CentOS local]# chkconfig --level 35 crond on
[root@CentOS local]# service crond restart
Stopping crond:                                            [  OK  ]
Starting crond:                                            [  OK  ]
[root@CentOS local]# service crond status
crond (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/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# 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 executed
0 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.cn
0 */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.cn
0 8-12/2 * * *  /usr/sbin/ntpdate 8.8.8.8    这是每天早上8点-12点之间,每两个小时0分的时候执行一次。


每个月的1号-20号之间的每个周五的晚上2点重启apache服务,大家试试写写?
本文出自 “虫子的博客” 博客,请务必保留此出处http://xlogin.blog.51cto.com/3473583/935136
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: