AIX下的cron使用小结

来源:互联网 发布:英语家教 知乎 编辑:程序博客网 时间:2024/06/08 01:54

1、cron介绍



cronAIX系统里是一个守护进程(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的关系


crontab的文件条目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

在用crontabat命令创建新任务时,由该文件通知cron守护进程

/var/adm/cron

Cron守护进行的主目录

/var/adm/cron/log

默认的日志文件,在此文件可以查看cron运行的任务的ownerpidstart timecommandstatus

/etc/cronlog.conf

用来配置cron日志

/var/adm/cron/queuedefs

Cron守护进程的事件文件

/var/spool/cron

指定cronspool区域

/var/spool/cron/crontabs

指定crontabspool区域,crontab文件就放在该目录

/var/adm/cron/cron.allow

允许使用cron的用户清单

/var/adm/cron/cron.deny

不允许使用cron的用户清单

 

补充fengsh:

出现了系统所有用户下crontab任务都没调起来,cron进程挂起或者死了情况,可以考虑对其守护进程进行重启。

ps -ef |grep cron

    root 3826012       1   0 09:35:52      -  0:00 /usr/sbin/cron

将进程kill -9 pid,然后执行/usr/sbin/cron启动cron进程

原创粉丝点击