Chinaunix首页 | 论坛 | 博客
  • 博客访问: 104574303
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-03-19 22:37:22


SCO UNIX系统启动时,会自动执行cron命令,在系统中产生一个cron精灵 
进程(或称守护进程)。该进程将自动调度相关作业并使其在后台运行。 
cron精灵进程可按照预先设定的时间或时间间隔自动执行用户提交的作业。 
如果想了解cron进程的活动情况,在/etc/default/cron 中,将CRONLOG设置为 
YES,该值默认为NO,系统将自动生成相应的日志文件/usr/lib/cron/log。 
在/etc/default/cron中MAXLOGSIZE 限制了log文件的大小,该变量以512字 
节为单位设定的log的最大块数,确省为2048块。 
在/etc/default/cron中的MAXCRON变量,控制在同一时刻允许运行的最大 
进程数量,确省为100。 
提交作业的命令有三个: at,batch和cron。通常 at 和 batch 用于只运行 
一次的作业提交。crontab 用于按照一定时间反复运行的作业。 

一。at 和 batch 的使用 
at 命令需要指定命令执行的时间。而batch命令则无需指定执行时间(相应 
命令只有在系统负载允许时才能执行)。 
语法如下 
at [ -m ] [ -f file ] [ -q letter ] time [ date ] [ increment ] 
at [ -m ] [ -f file ] [ -q letter ] -t [[CC]YY]MMDDhhmm.[SS] 
at -r job-id ... 
at -l [ job-id ... ] 
at -l -q letter 
batch 

相关文件与目录 
/usr/lib/cron 
main cron directory 
/usr/lib/cron/at.allow 
list of allowed users 
/usr/lib/cron/at.deny 
list of denied users 
/usr/lib/cron/queuedefs 
scheduling information 
/usr/spool/cron/atjobs 
spool area 
/usr/lib/cron/.proto 
at and batch environment information 
/usr/lib/cron/.proto.a 
at shell environment 
/usr/lib/cron/.proto.b 
batch shell environment 
/usr/lib/cron/.proto 
at and batch environment information 
/usr/lib/cron/.proto.a 
at shell environment 
/usr/lib/cron/.proto.b 
batch shell environment 

部分参数说明分别如下 
1)time 
表示时间,可指定为1,2,或4个数字,1或2个数字被认为是小时,4个数字 
被认为是小时和分钟,格式为 hh:mmm 
2)date 
表示日期 
3)increment 
表示要在前面所指定的时间(time[date])再推后一段时间 
4)-t [[cc]YY]MMDDhhmm.[SS] 
CC 世纪 
YY 年 
MM 月 
DD 日 
hh 时 
mm 分 
SS 秒 
5)-q letter 
把指定作业置于指定字母所指示的队列内,可以是从a到z的任何小写字母 
以下队列有特殊意义 
a at 队列 
b batch 队列 
c cron 队列 
6)-m 
不使用-m 选项时,作业的标准输出将直接mail给相应用户(除非作业被 
明确重新定向)。使用-m 选项时,即使作业没有输出,也将以邮件形式 
通知用户。 
7)-f file 
指定包含有at 作业的源文件名,以代替从标准输入。 
8)-l [job-id] 
列出指定作业的相关信息 
9)-r job-id 
删除指定作业 

at 和 batch 作业提交后,均被指定一个相应的作业标识符,at作业带有 
后缀.a, batch作业带有后缀 .b 。所有作业以其作业标识符为文件名,保存 
在/usr/spool/cron/atjobs目录中。 

二。crontab 的使用 
crontab 提交的命令主要用于定期执行某些任务 
用户提交的cron作业,都保存在相应的/usr/spool/cron/crontabs/username文件中 
语法如下 
crontab [ file ] 
crontab [ -e | -l | -r ] 
crontab -u user [ -e | -l | -r ] 
相关文件目录 
/usr/lib/cron 
main cron directory 
/usr/spool/cron/crontabs 
crontab directory 
/usr/lib/cron/cron.allow 
list of allowed users 
/usr/lib/cron/cron.deny 
list of denied users 
/usr/lib/cron/queuedefs 
cron data file 

部分参数说明分别如下 
1) crontab [cronfile] 
(不建议使用该方式,如果用crontab cronfile ,将会把原来的已经 
提交的cron作业删除) 
cronfile 是具有一定格式的普通文件,在文件中可以包含多余一个的 
作业信息,每个作业作为一个登记项,独占一行,用空格分开的6个字 
段,具体格式如下 
minutes hours day_of_month month day_of_week command 
minutes 分钟 0-60 
hours 小时 0-23 
day_of_month 日 1-31 
month 月 1-12 
day_of_week 星期的日 0-6(0表示星期日) 
command 命令 任何非交互的命令 
2) -l 
显示已经提交的cron 作业 
3)-e 
对已经提交的cron 作业编辑,或添加,删除作业 
建议使用该方式添加cron作业, 
相比手工修改/usr/spool/cron/crontabs/username文件,使用 
crontab -e 可以对提交的作业进行语法检查,如果没有按照规定6个 
字段提交作业,会提示相应错误信息。 
如果手工对/usr/spool/cron/crontabs/username 编辑,为确保作业 
提交可按照以下步骤执行 
用crontab -e 编辑该文件, 存盘退出 
或 
用ps 命令查找cron进程,用kill 杀下/etc/cron进程, 
rm /usr/lib/cron/FIFO 
/etc/cron 

注释: /usr/lib/cron/FIFO,当新的作业提交由crontab完成时,一个 
发送消息到cron守护进程的命令管道。 
4) -r 删除当前已经提交的cron 作业 
5) -u user 
对指定用户的cron 作业进行维护。 

三。相关维护 
/usr/lib/cron目录下的 
at.allow 记录了允许使用at和batch命令的用户 
at.deny 记录了禁止使用at和batch命令的用户 
cron.allow 记录了允许使用crontab 命令的用户 
cron.deny 记录了禁止使用crontab 命令的用户 

1) 如果只存在 .allow ,则只有包括在该文件中的用户可以执行相应命令 
,如果该文件为空,表明没有一个用户能执行相应命令。 
2) 如果不存在.allow ,只存在 .deny ,则只有不在该文件中的用户可以 
执行相应命令。如果该文件为空,表明所有用户都可以执行相应命令 
3) 如果.allow .deny 都存在,则 .allow 享有优先权 
4) 如果.allow .deny 都不存在,则只有超级用户才能执行相关命令。 

环境文件 
/usr/lib/cron/.proto定义的shell环境适用于 at和batch 。 
/usr/lib/cron/.proto.a 适用于at 
/usr/lib/cron/.proto.b 适用于batch 
.proto.a ,.proto.b 与 .proto相比有更高的优先权。 
默认情况下,只存在 .proto.b 和 .proto ,且内容相同。 

以上相关维护可以使用 cron manager 实现 

cron作业提交后,未能定时完成相应任务,可按照下面的方法查找原因 
1。查看 /usr/lib/cron/log 中的提示 
2。将提交的作业输出重新定向,查看相应的log文件 
作业提交后未能完成相应任务,通常是因为环境变量设置的问题 
例如:因PATH等变量的设置 未找到相关的程序等
阅读(712) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~