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

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: LINUX

2008-03-22 19:53:05

作者: xieaotian 出自:
crontab命令

用途

提交、编辑、列出或除去cron作业。

语法
crontab[-e[UserName]|-l[UserName]|-r[UserName]|-v[UserName]|File]

描述
这个crontab命令提交、编辑、列出或除去cron作业。一个cron作业是一个命令,其运行是由cron守护程序在规则的调度间隔执行的。要提交一个cron作业,指定crontab命令用-e标志。crontab命令调用一个编辑会话,允许创建一个crontab文件。在这个文件中,为每个cron创建条目。每个条目必须是一种cron守护程序可接受的格式。要得到创建条目的信息,参阅crontab文件条目格式。

当创建完条目和退出文件后,crontab命令将它复制到/var/spool/cron/crontabs目录,并把它放到一个文件中,此文件的名称是当前的用户名。如果以用户名命名的文件已存在于crontabs目录中,crontab命令会覆盖它。

同样的,可以通过指定文件参数创建crontab文件。如果此文件已经存在,格式必须是cron守护程序所需要的。如果文件不存在,crontab命令就调用编辑器。如果EDITOR环境变量存在,此命令就调用它指定的编辑器。否则,crontab命令调用vi编辑器。

要列出crontab文件的内容,就指定crontab命令并采用-l标志。要除去存在的文件,采用-r标志。

可选的UserName参数可被crontab文件的所有者或者root用户来使用,为指定的用户编辑、列出、除去或验证cron作业的状态。如果UserName是无效的,就会产生错误消息并退出程序。

如果可选的UserName参数没有被指定,这个crontab标志对于root用户和当前用户可用。

安全性
只有root用户和crontab文件的所有者可以在-e、-l、-r和-v标志后面使用UserName以编辑、列出、除去或验证指定用户的crontab文件。

cron守护程序
这个cron守护程序运行的命令和crontab文件条目是相对应的。如果不重新定向cron作业的输出为标准输出或标准错误,cron守护程序就会通过电子邮件告知您任何命令输出或错误。如果在crontab文件中指定了不正确的cron作业,这个cron守护程序不运行这个作业。

cron守护程序只在cron守护程序被初始化时检查crontab文件。当用crontab命令改变crontab文件时,指示变化的消息被发送到cron守护程序。这消除了在规则的调度间隔检查新的或改变的文件的开销。

控制使用crontab命令
/var/adm/cron/cron.allow和/var/adm/cron/cron.deny文件控制哪一个用户可以使用crontab命令。root用户可以创建、编辑或删除这些文件。这些文件中的条目是用户登录名,每行一个名称。如果登录标识和多个的登录名称相关联,这个crontab命令采用第一个在/etc/passwd文件中的登录名称,而不管当前实际使用哪一个登录名称。而且,要允许用户启动cron作业,应该使用chuser命令将/etc/security/user文件中的守护程序属性设置为TRUE。

以下关于cron.allow文件的一个示例:

root nick dee sarah
如果cron.allow文件存在,只有在文件中出现其登录名称的用户可以使用crontab命令。root用户的登录名必须出现在cron.allow文件中,如果这个文件存在的话。系统管理员可以明确的停止一个用户,通过使用crontab命令,同时在cron.deny文件中列出用户的登录名。如果只有cron.deny文件存在,任一名称没有出现在这个文件中的用户可以使用crontab命令。

如果以下一个条件成立,用户将不能使用crontab命令:

cron.allow文件和cron.deny文件不存在(只允许root用户)。 

cron.allow文件存在,但用户的登录名并不列在其中。 

cron.deny文件存在,并且用户的登录名列在其中。

如果cron.allow和cron.deny文件都不存在,只有被root用户授权的人可以用crontab命令提交一个作业。

crontab文件条目格式
一个crontab文件包含每个cron作业的条目。条目由换行字符分开。每个crontab文件条目包括6个字段,它们被空格或制表符以以下格式分开:

minute hour day_of_month month weekday command

这些字段接收以下值:

minute 0到59
hour 0到23
day_of_month 1到31
month 1到12
weekday 0到6(星期日到星期六)
command shell命令

必须为每个字段指定一个值。除了command字段,这些字段可以包含以下内容:

指定范围内的一个数。要在5月运行一个命令,在month字段指定5。 

两个被破折号分开的数目表明了包含的范围。要从星期二到星期五运行cron作业,把2-5放到weekday字段中。 

由逗号隔开的数字列表。要在一月第一天和最后一天的运行命令,在day_of_month字段中可指定1,31。 

*(星号),意味着所有的允许值。要每个小时运行一个作业,在小时字段指定一个星号。

注:任一字符前如有一个反斜杠符号(包括%)会引起字符被字面上的处理。天的规范是由两个字段(月的天和星期的天)组成的。如果指定两者都为元素的一个列表,这两个字段均被包含在其中。例如,如下条目:

001,15*1command

将在每个月的第一天和第十五天运行command,还有每个星期一。要仅在一个字段中指定天,另一字段应包含*。

指定命令
这个cron守护程序运行命名于所选日期和时间的第六个字段中的字段。如果包含一个%(百分号)在第六字段,cron守护程序像命令调用一样处理所有的任务,并使所有的后续任务在标准输入上可用,除非转义百分号(\%)。空行和第一个非空字符是编号标记(#)将被忽略。如果命令含有反斜杠()的参数,反斜杠前应加另一个反斜杠。

注:shell只运行该命令字段的第一行。所有其他的行作为标准的输入对于命令可用。

cron守护程序从HOME目录中启动一个子shell。如果调度一个命令运行,这时您尚未登录,并且希望在.profile文件中的命令运行,这个命令必须明确的读取您的.profile文件。

cron守护程序为每个shell提供了一个缺省的环境,定义了HOME,LOGNAME,SHELL(=/usr/bin/sh)和PATH(=/usr/bin)。

标志 -eUserName 编辑用户的crontab文件的副本,或者,如果一个有效的UserName的crontab文件不存在则创建一个空的文件进行编辑。当编辑完成后,文件被到crontab目录作为用户的crontab文件。
-lUserName 列出用户的crontab文件。
-rUserName 从crontab目录除去用户的crontab文件。
-vUserName 列出用户cron作业的状态。
安全性
审计事件:如果审计子系统已经被正确的配置和启用,crontab守护程序就会当每次执行命令时产生以下审计记录(或事件):

事件 信息
CRON_JobRemove 列出哪一个用户除去了cron作业和除去的时间。
CRON_JobAdd 列出哪一个用户添加了cron作业和添加的时间。

有关如何正确选择和分组审计事件以及如何配置审计事件数据收集的更详细信息,请参阅《安全性》中的SettingupAuditing。

退出状态
该命令返回以下退出值:

0 成功完成。
>0 发生错误。
示例
要将名为mycronjobs的文件复制到/var/spool/cron/crontabs目录中,输入以下内容:

 crontabmycronjobs

文件将复制为:

 /var/spool/cron/crontabs/

其中是您当前的用户名。 

要每小时将时间写入控制台(以小时的形式),请输入:

0****echoThehouris`date`。>/dev/console

要在每个星期一、星期三和星期五的6:30a.m.运行calendar命令,请输入:

306**1,3,5/usr/bin/calendar

要在一年中每天6:30运行calendar命令,请输入:

306***/usr/bin/calendar

要在八月每天午夜运行名为maintenance的脚本,请输入:

00*8*/u/harry/bin/maintenance

为命令的标准输入定义文本,请输入:

016*125/usr/sbin/wall%HAPPYHOLIDAY!%Rememberto turninyourtimecard.

在%(百分号)之后定义wall命令的标准输入的文本:

HAPPYHOLIDAY!  Remembertoturninyourtimecard.

文件 /var/adm/cron/FIFO 指定的管道,当用crontab或at命令提交新作业时,它将消息发送到cron守护程序。
/var/spool/cron/crontabs 指定crontab缓冲池区域。
/var/adm/cron/cron.allow 指定用户列表,这些用户被允许访问crontab命令。
/var/adm/cron/cron.deny 指定用户列表,这些用户不被允许访问crontab命令。
阅读(148) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~