Welcome to jaever.com/diary

Crontab任务设置与应用

什么是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

INFO: 2008-07-06 15:04:58 | purpen | digg | link

Copyright © 2008 Jaever. All rights reserved.

This Site looks and works best when viewed using browsers enabled with JavaScript 1.5 and CSS, such as Firefox 1+ or Safari 3+.