什么是Crontab
crontab:是用来让使用者在固定时间或固定间隔循环执行某一命令
使用Crontab
要使用cron服务, 需安装vixie-cron,crontabs,也要确保crond处于运行状态.
;检查安装
[root@xmpctc ~]# rpm -aq |grep cron
crontabs-1.10-7
anacron-2.3-32
vixie-cron-4.1-44.EL4
;检查运行状态
[root@xmpctc ~]# service crond status
crond (pid 2868) is running...
cron的主要配置文件在以下的/etc/crontab文件中
[root@xmpctc ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
#1. Runing The MRTG Net Flow Control
*/5 * * * * root /usr/bin/mrtg /usr/local/apache2/htdocs/mrtg/net/mrtg.cfg > /dev/null 2>&1
#2. Runing The MRTG CPU Flow Control
*/2 * * * * root /usr/bin/mrtg /usr/local/apache2/htdocs/mrtg/cpu/mrtg.cfg.cpu > /dev/null 2>&1
#3. Runing The MRTG Person Flow Control
*/3 * * * * root /usr/bin/mrtg /usr/local/apache2/htdocs/mrtg/person/mrtg.cfg.person > /dev/null 2>&1
#3. Runing The MRTG Person Flow Control
*/4 * * * * root /usr/bin/mrtg /usr/local/apache2/htdocs/mrtg/unbuntu/mrtg.cfg.unbuntu > /dev/null 2>&1
Crontab变量:
1. SHELL变量的值是指定系统使用的SHELL环境(bash shell)
2. PATH变量定义了执行命令的路径(/sbin,/bin,/usr/sbin,/usr/bin)
3. MAILTO变量定义的用户名.Cron的输出以电子邮件的形式发送,如果MAILTO变量定义为空(MAILTO=""), 电子邮件就不会被发送.
4. HOME变量可用来设置主目录.
Crontab格式:
minute hour day month dayofweek command
* minute - 从0 到 59的整数
* hour - 从0到23的整数
* day - 从1到31的整数(必须是指定月份的有效日期)
* month - 从1到12的整数(或如Jan或Feb简写的月份)
* dayofweek - 从0到7的整数,0或7用来描述周日~周1(或用Sun或Mon简写来表示)
* command - 需要执行的命令(可用as ls /proc >> /tmp/proc或执行自定义脚本的命令)
Crontab特殊符号:
* 星号(*) - 对于以上各语句,星号(*)表示所有可用的值. 如:*在指代minute时表示每分钟执行该命令.
* 连字号(-) - 整数间的连字号(-)表示整数列,如:1-5意思是整数1,2,3,4,5
* 逗号(,) - 指定数值由逗号分开.如:3,4,7表示这三个指定整数.
* 斜杠(/) - 符号“/”指定步长设置."/<interger>"表示步长值。如:0-59/5定义每五分钟执行一次。步长值也可用星号表示。如*/5用来运行每五分钟运行指定任务.
* 井号(#) - 以“#”开头的为注释行,不会被执行.
/etc/crontab所示,它在RUN-PART脚本中指定系统每小时,每天,每周.每月运行/etc/cron.hourly, /etc/cron.daily,/etc/cron.weekly,和/etc/cron.monthly中的文件.这些目录中的文件为shell脚本.如果一个cron任务需要定时而不是按小时,天,周,月来执行,则需要添加/etc/cron.d目录.这个目录下的所有文件和文件/etc/crontab语法相同.
除了root用户之外的其他用户也可以执行crontab配置计划任务.其他用户定义的crontab存储在目录 /var/spool/cron下,任务会以创建者的身份被执行.要以特定用户创建一个crontab,先以该用户登录,执行命令crontab -e, 系统会启动crontab.文件内容与/etc/crontab格式相同. 当更改的crontab需要保存时,文件会保存在成如下文件/var/spool/cron/username.文件名会根据用户名而不同.
crontab命令
;编辑crontab任务
[root@xmpctc ~]# crontab -e
;显示crontab任务
[root@xmpctc ~]# crontab -l
;执行指定用户的crontab任务操作(编辑,显示,删除)
[root@xmpctc ~]# crontab -u
;删除crontab任务
[root@xmpctc ~]# crontab -r
***注:crontab -r命令,删除的就是当前用户的计划任务,还需要注意的是该命令是删除所有用户的所有计划任务.普通用户不能删除root的计划任务的权限.
crond服务会每分钟检查一次/etc/crontab,/etc/cron.d/,和/var/spool/cron文件下的变更.如果发现变化,就会下载到存储器中.因此,即时crontab文件改变了,程序也不需要重新启动。如果须要马上生效可执行
[root@xmpctc ~]# service crond restart
详细参考:
http://www.adminschoice.com/docs/crontab.htm