从AFC系统维护实际出发,为降低系统能耗,提高系统设备使用寿命,结合重庆市高温、高湿的特有地理环境和AFC系统设备高能耗的客观情况,通过对AFC系统的深入分析。从AFC系统安全的角度和系统优化的目的,着重系统自身功能的开发和自带工具的利用,详细阐述了Crontab工具的实现机制和与AFC系统的结合方式、优化方向。
通过对Crontab工具在重庆轨道交通二号线AFC中心系统的IBM服务器和车站系统的进、出站闸机上的使用的分析,提出了系统优化的原则,即系统优化应尽量利用系统自身的功能,最大限度地降低系统的风险、最大限度地保证系统的安全。
1引言
Crontab在Unix&Linux系统中是一个古老而优久的系统工具,在重庆轨道交通二号线AFC系统中它除了应用于AFC中心系统的IBM服务器中还广泛地应用于18个车站的数百台闸机中!通过Crontab工具,我们可以控制Unix&Linux操作系统平台上的任务,即让系统在特定的时间、环境下执行特定的任务。具体来说,通过Crontab工具我们在AFC中心IBM-P650服务器上实现了系统的自我管理和ORACLE数据库的周期性、定时性、自动化的备份功能;利用该工具,我们还可以实现每天运营结束后,闸机的自动关机功能,到第二天开始运营前才启动,从而达到降低能耗、提高电子元器件的使用寿命、延长闸机的使用寿命的目的。对于重庆市特有的高温、高湿环境,这点在重庆二号线的AFC车站系统设备中有着特别重要的实际意义。
2 Crontab在重庆轨道交通二号线中的应用
3 Crontab的实现机制及具体实现
Crontab的实现主要包括Cron系统进程和Crontabs文件;Cron系统进程在Unix&Linux操作系统的多用户模式下运行,负责运行特定的计划的任务,Cron进程会按照Crontabs文件指定的时间执行命令;Crontabs文件上存储着指定的命令,由于Crontabs文件是不能通过编辑命令修改的,所以对它的编辑或其它的操作要通过Crontab命令。
Cron进程就是我们一般所谓的系统后台进程,它的启动是系统参考/etc/inittab启动的,所以它运行的状态也是一种衡定的后台进程状态,如果KILL掉,它将会自动重启。
Cron后台进程执行的任务就是Cron事件,所以在系统中就存在着Crontab事件、At事件、Batch事件Ksh事件等等事件;所有的Cron事件都是能够被配置的,比如,对于Crontab事件,默认状态下是每隔60秒将会被探查、运行的优先级适合于低于默认的2级的任何级别、可以同时运行100个,这些所有的配置将可以通过对/var/adm/cron/queuedefs文件的修改得以实现(该目录为完整的UNIX操作系统下的文件目录,不同的系统有可能不一样,可参考随机的相关说明文档)。比如,如果任务将会运行在低于默认的优先级的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脚本程序,实现Oracle数据库的作为增量备份的启点的0级备份;而0 1 * * 0,1,2,3,5,6 /home/oracle/ora1.sh则是表示在除星期四的每一天的凌晨1点执行/home/oracle/ora1.sh脚本程序,实现Oracle数据库的增量备份的1级备份。
使用Crontab –l可以浏览当前Crontabs文件的内容,使用Crontab –e则可以对Crontabs文件进行编辑。例如我们在命令行中输入:
# Crontab –l > /crontmp
# Vi /crontmp
# Crontab /crontmp
Crontab –l命令显示Cron进程使用的Crontabs文件,Crontab –l > /crontmp将会创建当前的Crontab文件的一个拷贝crontmp,并且允许你在不影响当前的crontab文件的前提下安全地编辑crontab的拷贝文件Vi /crontmp;然后再提交Crontab /crontmp;这样crontmp文件中的内容将会覆盖Crontab目录中的文件内容并且马上刷新cron后台进程,现在你也拥有crontab文件的一个拷贝crontmp文件了。
4 与Crontab相关的其它方面
与Crontab相关的还有At和Batch命令。这三个命令之间道理相似,只是提交给Cron后台进程执行的方式不同,虽然也是定时地执行计划任务,但应用的环境和具体的要求是不太一样的。比如At命令是计划在将来的某个时间执行一次任务或任务集而Batch命令的目的主要是为了减轻系统立即执行的压力而将执行的任务放在一个队列中,待系统的压力减轻后再考虑执行,比如在CPU负载低的时候。但由于在现在的AFC系统中使用的实际意义并不大且限于篇幅,相关命令的细节请参考相关的UNIX操作系统文献,在此不一而足。
5 结论
本文根据Crontab的原理结合重庆轨道交通二号线AFC系统的实际情况建立的AFC中心系统及车站系统的Crontab表,并将其应用AFC中心服务器系统及车站系统设备中,结果表明所提出机理及判据在理论上是合理的。利用本文所阐述的理论和长期的维护经验,能够比较好地实现在重庆地区特有高温、高湿气候环境下,利用有限的系统维护人员,大大降低系统的能耗、提高系统设备的使用寿命。最关键的是建立了系统维护的基本准则,即系统的优化特别是生产型系统的优化应该尽量地利用系统自身的功能,在吃透系统原理的前提下结合实际的应用,着重挖掘系统内潜力,以便最大限度地提高系统的安全等级,降低系统的风险。