分类: LINUX
2008-09-01 00:53:21
提交、编辑、列出或除去 cron 作业。
crontab [ [UserName] | [UserName] | [UserName] | [UserName] | File ]
这个 crontab 命令提交、编辑、列出或除去 cron 作业。一个 cron 作业是一个命令,其运行是由 cron 守护进程在规则的调度间隔执行的。要提交一个 cron 作业,指定 crontab 命令用 -e 标志。crontab 命令调用一个编辑会话,允许创建一个 crontab 文件。在这个文件中,为每个 cron 创建条目。每个条目必须是一种 cron 守护进程可接受的格式。要得到创建条目的信息,参阅 。
当创建完条目和退出文件后,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 守护进程运行的命令和 crontab 文件条目是相对应的。如果不重新定向 cron 作业的输出为标准输出或标准错误,cron 守护进程就会通过电子邮件告知您任何命令输出或错误。如果在 crontab 文件中指定了不正确的 cron 作业,这个cron 守护进程不运行这个作业。
cron 守护进程只在 cron 守护进程被初始化时检查 crontab 文件。当用 crontab 命令改变 crontab 文件时,指示变化的消息被发送到 cron 守护进程。这消除了在规则的调度间隔检查新的或改变的文件的开销。
/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 用户授权的人可以用 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 字段,这些字段可以包含以下内容:
注: 任一字符前如有一个反斜杠符号(包括 %)会引起字符被字面上的处理。天的规范是由两个字段(月的天和星期的天)组成的。如果指定两者都为元素的一个列表,这两个字段均被包含在其中。例如,如下条目:0 0 1,15 * 1 command将在每个月的第一天和第十五天运行 command,还有每个星期一。要仅在一个字段中指定天,另一字段应包含 * 。
这个 cron 守护进程运行命名于所选日期和时间的第六个字段中的字段。如果包含一个 % (百分号)在第六字段,cron 守护进程像命令调用一样处理所有的任务,并使所有的后续任务在标准输入上可用,除非转义百分号 (\%)。空行和第一个非空字符是编号标记(#)将被忽略。如果命令含有反斜杠 (\) 的参数,反斜杠前应加另一个反斜杠。
cron 守护进程从 HOME 目录中启动一个子 shell。如果调度一个命令运行,这时您尚未登录,并且希望在.profile 文件中的命令运行,这个命令必须明确的读取您的 .profile 文件。
cron 守护进程为每个 shell 提供了一个缺省的环境,定义了 HOME, LOGNAME, SHELL (=/usr/bin/sh) 和 PATH (=/usr/bin)。
-e UserName | 编辑用户的 crontab 文件的拷贝,或者,如果一个有效的 UserName 的 crontab 文件不存在则创建一个空的文件进行编辑。当编辑完成后,文件被拷贝到 crontab 目录作为用户的crontab 文件。 |
-l UserName | 列出用户的 crontab 文件。 |
-r UserName | 从 crontab 目录除去用户的 crontab 文件。 |
-v UserName | 列出用户 cron 作业的状态。 |
审计事件:如果审计子系统已经被正确的配置和启用,crontab 守护进程就会当每次执行命令时产生以下审计记录(或事件):
事件 | 信息 |
---|---|
CRON_JobRemove | 列出哪一个用户除去了 cron 作业和除去的时间。 |
CRON_JobAdd | 列出哪一个用户添加了 cron 作业和添加的时间。 |
请参阅《AIX 5L V5.2 安全指南》中的『设置审计』以获取关于如何适当地选择和分组审计事件及如何配置审计事件数据集合的详细信息。
此命令返回以下退出值:
0 | 成功完成。 |
>0 | 发生错误。 |
crontab mycronjobs
0 * * * * echo The hour is `date` 。 >/dev/console
30 6 * * 1,3,5 /usr/bin/calendar
30 6 * * * /usr/bin/calendar
0 0 * 8 * /u/harry/bin/maintenance
0 16 * 12 5 /usr/sbin/wall%HAPPY HOLIDAY!%Remember to turn in your time card.
在 %(百分号)之后定义 wall 命令的标准输入的文本:
HAPPY HOLIDAY! Remember to turn in your time card.
/var/adm/cron/FIFO | 当新的作业的提交是由 crontab 或 at 命令完成时,一个发送消息到 cron 守护进程的命名管道。 |
/var/spool/cron/crontabs | 指定 crontab 缓冲池区域。 |
/var/adm/cron/cron.allow | 指定用户列表,这些用户被允许访问 crontab 命令。 |
/var/adm/cron/cron.deny | 指定用户列表,这些用户不被允许访问 crontab 命令。 |