1 引言
Crontab在Unix&Linux系统中是一个古老而优久的系统工具,在重庆轨道交通二号线AFC系统中它除了应用于AFC中心系统的IBM服务器中还广泛地应用于18个车站的数百台闸机中!通过Crontab工具CONTROL ENGINEERING China版权所有,我们可以控制Unix&Linux操作系统平台上的任务,即让系统在特定的时间、环境下执行特定的任务。具体来说,通过Crontab工具我们在AFC中心IBM-P650服务器上实现了系统的自我管理和ORACLE数据库的周期性、定时性、自动化的备份功能;利用该工具,我们还可以实现每天运营结束后控制工程网版权所有,闸机的自动关机功能,到第二天开始运营前才启动,从而达到降低能耗、提高电子元器件的使用寿命、延长闸机的使用寿命的目的。对于重庆市特有的高温、高湿环境,这点在重庆二号线的AFC车站系统设备中有着特别重要的实际意义。
2 Crontab在重庆轨道交通二号线中的应用
下列各图分别是Crontab工具在AFC中心系统IBM-P650服务器及车站闸机中的应用(注:中心系统IBM-P650服务器是AIX操作系统;车站闸机是LINUX操作系统):
![](http://www.cechina.cn/upload/article/a7b5627a-ef26-41e1-9e09-8ebe6a570150/neo_img_1_new.jpg)
(图一)Cronta
![](http://www.cechina.cn/upload/article/a7b5627a-ef26-41e1-9e09-8ebe6a570150/neo_img_2_new.jpg)
(图二)Crontab实现IBM服务器的自动管理
![](http://www.cechina.cn/upload/article/a7b5627a-ef26-41e1-9e09-8ebe6a570150/neo_img_3_new.jpg)
(图三)Crontab实现Oracle数据库的每天的自动备份
3 Crontab的实现机制及具体实现
Crontab的实现主要包括Cron系统进程和Crontabs文件;Cron系统进程在Unix&Linux操作系统的多用户模式下运行,负责运行特定的计划的任务,Cron进程会按照Crontabs文件指定的时间执行命令;Crontabs文件上存储着指定的命令,由于Crontabs文件是不能通过编辑命令修改的,所以对它的编辑或其它的操作要通过Crontab命令。
Cron进程就是我们一般所谓的系统后台进程,它的启动是系统参考/etc/inittab启动的,所以它运行的状态也是一种衡定的后台进程状态,如果KILL掉控制工程网版权所有,它将会自动重启。
Cron后台进程执行的任务就是Cron事件,所以在系统中就存在着Crontab事件、At事件、Batch事件Ksh事件等等事件;所有的Cron事件都是能够被配置的,比如CONTROL ENGINEERING China版权所有,对于Crontab事件,默认状态下是每隔60秒将会被探查、运行的优先级适合于低于默认的2级的任何级别、可以同时运行100个,这些所有的配置将可以通过对/var/adm/cron/queuedefs文件的修改得以实现(该目录为完整的UNIX操作系统下的文件目录,不同的系统有可能不一样,可参考随机的相关说明文档)。比如CONTROL ENGINEERING China版权所有,如果任务将会运行在低于默认的优先级的10级、每隔两分钟被探查一次、允许同时启动200个任务,则以下条目将会设置在/var/adm/cron/queuedefs文件中:c.200j10n120w。
那么c.200j10n120w是什么意思呢?我们可以用下面这个简图来说明:
c.200j10n120w
| | | |
| | | 等待周期 (seconds)
| | 优先级值(nice)
| 任务数(jobs)
cron事件
Cron根据Crontabs文件中的定义在指定的时间执行相应的任务。Crontabs文件存在于/var/spool/cron/crontabs/user目录中。Cron通常只能由root用户使用,除非在以下两个文件中有特殊的规定:/var/adm/cron/cron.deny和/var/adm/cron/cron.allow。
/var/adm/cron/cron.deny拒绝使用Cron的用户 而/var/adm/cron/cron.allow允许使用Cron的用户。
Crontab文件的格式是:minute hour day month day_ of_ week command 。其中分别取值:
minute : 0-59
hour : 0-23
day of the month :1-31
month of the year :1 -12
day of the week :0-6 (0=星期天, 1 =星期一, 等等)
这些域可以是“*”号,以“,”做分隔的列表或者是一个取值范围。
例如:在(图一)Crontab使车站闸机实现自动重启中的
01 4 * * * /sbin/reboot 表示在每天早上4.01分执行/sbin/reboot命令,实现系统自动重启。在(图三)Crontab实现Oracle数据库的自动备份中,0 0 * * 4 /home/oracle/ora0.sh 表示在每个星期四的凌晨0点执行/home/oracle/ora0.sh脚本程序CONTROL ENGINEERING China版权所有,