Linux cron中定时命令的使用



linux定时命令,Linux cron中定时命令的使用。crontab文件中包含了用于cron守候进程执行的一条或者多条linux指令,在每条指令里面都会指明在指定的日期、指定的时间执行某个特定的命令。各个用户都会有自己的crontab表。linux用户可以通过下面的命令来编辑相应的crontab文件:

(1)crontab -u    //用于设定某个用户的cron服务,一般root用户在执行该命令时需要该参数
(2)crontab -l     //列出属于某个用户的cron服务的详细内容
(3)crontab -r    //删除属于某个用户的cron服务
(4)crontab -e   //用于编辑某个用户的cron服务

在crontab文件中,空白行以及前导的空格与制表符均会被忽略。除去空白符,首个字符为“#”的行会被当作注释,并被忽略。一个有效的crontab行可以用于设定一个环境或者执行一个cron命令。其中,环境变量的设定具有如下形式:name = value。式中,赋值符号周围的空格是可选的,并且value中任何非前导空格均会被当作其值的一部分。字符串类型的值可以位于引号中,包括单引号和双引号,以便能够保留前导或者尾部的空格。

cron守候进程会自动设置一些环境变量。在默认情况下,SHELL将会被设置为/bin/sh,LOGNAME和HOME环境变量将会根据crontab所有者的/etc/passwd行中的值进行设定。HOME和SHELL这两个环境变量可以被覆盖,而LOGNAME是不可以的。

对每行crontab命令,均由五个时间/日期字段构成,后跟一个用户名(如果这是一个系统crontab文件),后跟将要执行的命令。cron每分钟便会检查crontab文件中的条目,以便及时执行合适的命令。crontab文件中时间和日期字段为:

字段名称 允许的值
minute(分钟) 0-59
hour(小时) 0-23
day of month(每月中第几天) 1-31
month(月) 1-12(或指定月的名称)
day of week(每周中星期几) 0-7(0和7表示星期日,或者使用名称)

需注意:字段值“*”表示整个取值区间。对于各个字段可以指定数字区间,区间是两个数字,中间以-相隔,并包含两端的值。各个字段也允许列表值,一个列表为一个数字集合(包含区间),每个值之间以(“,”)相隔。例如:“1, 2, 5, 9”和“0-4, 8-12”等。

在指定取值区间时,可以指定步长值,例如:0-23/2,表示每两个小时执行一次。同时,可以在一个“*”符号后指定一个步长值。除去上述五个时间和日期字段,每行中的剩余部分(直至新的一行或者“%”符号)便是将要执行的命令。该命令将由/bin/sh或者由SHELL环境变量指定的shell来执行。命令中的“%”符号将会被转换为换行符号。除非使用“\”字符进行转义,否则“%”符号之后的所有数据将会被发送给该命令作为标准输入。

需注意的是:linux命令中的“天”可以通过两个字段来指定:(1)月中的天(day of month);(2)星期中的天(day of week)。如果这两个字段均被限定,命令将会在匹配两者任一的时间上执行。例如:30 4 1,15 * 5将会使得指定的命令在每月的1日和15日执行,另外加上每周的周五。而5 0 * * * $HOME/bin/daily.job >> $HOME/temp/out 2>&1表明命令将会在每天的00:05分执行。