1、cron介绍
cron
在
AIX
系统里是一个守护进程(
Daemon
),用来自动运行
UNIX
命令。有了
cron
后,用户可以安排类似于
windows
下的“任务计划”,定期自动运行某些任务(命令或者脚本)。
cron
的运行是通过
crontab
来驱动的。
cron
进程运行时,会读取
/etc/cronlog.conf
配置文件来指定运行日志的存储信息。如果用户未配置
cronlog.conf
,则
cron
进程将运行的日志信息存储在
/var/adm/cron/log
文件里。可以通过查看日志信息验证所设置的任务是否正常运行。
aix
自带了
cron
,要验证
cron
是否正在运行。输入
cron
命令即可查看
bash-3.00# cron
! cron 已在运行。
公元2009年08月04日 星期二 14时15分04秒
cron
守护进程运行的命令和
crontab
文件条目是相对应的。如果不重新定向
cron
作业的输出为标准输出或标准错误,
cron
守护进程就会通过电子邮件告知您任何命令输出或错误。如果在
crontab
文件中指定了不正确的
cron
作业,这个
cron
守护进程不运行这个作业。
cron
守护进程只在
cron
守护进程被初始化时检查
crontab
文件。当用
crontab
命令改变
crontab
文件时,指示变化的消息被发送到
cron
守护进程。这消除了在规则的调度间隔检查新的或改变的文件的开销。
2、crontab介绍
⑴、语法
crontab
的语法为:
crontab [ -e [UserName] | -l [UserName] | -r [UserName] | -v [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
标志。
⑵、与
cron
的关系
cron
tab
的文件条目
和
cron
守护进程运行的命令是相对应的。如果不重新定向
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
。
⑷、文件条目格式
一个
crontab
文件按包含每个
cron
作业的条目。每个条目包括
6
个字段,格式如下:
.---------------- minute (0 - 59)
| .------------- hour (0 - 23)
| | .---------- day of month (1 - 31)
| | | .------- month (1 - 12) OR jan,feb,mar,apr ...
| | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
| | | | |
* * * * * command to be executed
必须为每个字段指定一个值。除了
command
字段,这些字段可以包含以下内容:
指定范围内的一个数。要在
5
月运行一个命令,在
month
字段指定
5
。
两个被破折号分开的数目表明了包含的范围。
例如,
要从星期二到星期五运行
cron
作业,把
2-5
放到
weekday
字段中。
由逗号隔开的数字列表。要在一月第一天和最后一天的运行命令,在
day
_of_
month
字段中可指定
1,31
。
*
(星号),意味着所有的允许值。要每个小时运行一个作业,在小时字段指定一个星号。
3、cron 和crontab 相关的文件及目录
因
cron
是系统默认安装的,其相关的目录和描述如下表:
|
目录或文件 |
描述 |
|
/var/adm/cron/FIFO |
在用
crontab
或
at
命令创建新任务时,由该文件通知
cron
守护进程 |
|
/var/adm/cron |
C
ron
守护进行的主目录 |
|
/var/adm/cron/log |
默认的日志文件,在此文件可以查看
cron
运行的任务的
owner
,
pid
,
start time
,
command
和
status |
|
/etc/cronlog.conf |
用来配置
cron
日志 |
|
/var/adm/cron/queuedefs |
C
ron
守护进程的事件文件 |
|
/var/spool/cron |
指定
cron
的
spool
区域 |
|
/var/spool/cron/crontabs |
指定
crontab
的
spool
区域,
crontab
文件就放在该目录 |
|
/
var/adm/cron/cron.allow |
允许使用
cron
的用户清单 |
|
/var/adm/cron/cron.deny |
不允许使用
cron
的用户清单 |