一: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 守护进程只在 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这些字段接收以下值:
下面是一些实际的例子:
拷贝一个名为 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的用户清单 |