AIX 下cron使用

一:AIX下cron使用

  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命令即可查看,命令输出如下:

<span style="font-size:14px;">root@****:/var/adm/cron#cron  
! cron is already running.
 Wed May 13 10:07:06 BEIST 2015</span>

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

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


  2. crontab介绍

1)语法

         crontab 命令
用途
提交、编辑、列出或除去 cron 作业。 
语法
crontab [ -e [UserName] | -l [UserName] | -r [UserName] | -v [UserName] | File ]

-e UserName 编辑用户的 crontab 文件的拷贝,或者,如果一个有效的 UserName 的 crontab 文件不存在则创建一个空的文件进行编辑。当编辑完成后,文件被拷贝到 crontab 目录作为用户的crontab 文件。 
-l UserName 列出用户的 crontab 文件。 
-r UserName 从 crontab 目录除去用户的 crontab 文件。 
-v UserName 列出用户 cron 作业的状态。

       一个 cron 作业是一个命令,其运行是由 cron 守护进程在规则的调度间隔执行的。要提交一个 cron 作业,指定 crontab 命令用 -e 标志。crontab 命令调用一个编辑会话,允许创建一个 crontab 文件。在这个文件中,为每个 cron 创建条目。每个条目必须是一种 cron 守护进程可接受的格式。    

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

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

 3. 安全性

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

 4. crontab文件格式

       一个crontab文件按包含每个cron作业的条目。每个条目包括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 月运行一个命令,在 月 字段指定 5。 
两个被破折号分开的数目表明了包含的范围。要从星期二到星期五运行 cron 作业,把 2-5 放到 weekday 字段中。
由逗号隔开的数字列表。要在一月第一天和最后一天的运行命令,在日_of_月 字段中可指定 1,31。 
* (星号),意味着所有的允许值。要每个小时运行一个作业,在小时字段指定一个星号。
注: 任一字符前如有一个反斜杠符号(包括 %)会引起字符被字面上的处理。天的规范是由两个字段(月的天和星期的天)组成的。如果指定两者都为元素的一个列表,这两个字段均被包含在其中。例如,如下条目: 
0 0 1,15 * 1 command将在每个月的第一天和第十五天运行 command,还有每个星期一。要仅在一个字段中指定天,另一字段应包含 * 。

        下面是一些实际的例子:

拷贝一个名为 mycronjobs 的文件,到 /var/admn/cron/crontabs 目录下,输入以下内容: 
crontab mycronjobs将时间以小时的形式把每个小时写到 console 中,输入: 
0 * * * * echo The hour is `date` 。
>/dev/console要在每个星期一、星期三和星期五的 6:30 a.m. 运行 calendar 命令,输入: 
30 6 * * 1,3,5 /usr/bin/calendar要在一年的每一天的 6:30 运行 calendar 命令,输入: 
30 6 * * * /usr/bin/calendar要在八月的每天午夜运行一个称为 maintenance 的脚本,输入: 
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.文件


 5. cron及crontab的相关目录及文件

目录或文件 描述
/var/adm/cron/FIFO 在用crontab或at命令创建新任务时,由该
文件通知cron守护进程
/var/adm/cron  Cron守护进行的主目录
/var/adm/cron/log 默认的日志文件,在此文件可以查看cron运行
的任务的owner,pid,start time,
command和status
/etc/cronlog.conf 用来配置cron日志
/var/adm/cron/queuedefs Cron守护进程的事件文件
/var/spool/cron 指定cron的spool区域
/var/spool/cron/crontabs 指定crontab的spool区域,crontab文件就
放在该目录
/var/adm/cron/cron.allow 允许使用cron的用户清单
/var/adm/cron/cron.deny 不允许使用cron的用户清单


你可能感兴趣的:(crontab,cron,cron.allow,cron.deny)