• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

[转贴]Unix系统应用服务程序的自动启停

发布: 2007-6-08 22:43 | 作者: seanhe | 来源: | 查看: 19次 | 进入软件测试论坛讨论

领测软件测试网
[color=green:2e66d995a1]

中国建设银行三门峡分行 杨跃峰 

目前,许多银行的服务器端操作系统彩的是Unix系统。作为系统的中心平台,Unix上往往运行了大量的应用服务程序,以响应客户端的各种请求。随着银行业务的增多,应用范围的扩大,这些应用程序也越来越多,这就带来了一系列的维护负担和运行风险。由于每一次开机都需要管理员逐个启动应用服务程序(包括数据库系统),每一次关机也面临同样的问题以保证程序和数据的完整性。为将各种损失减少到最小,实现启停过程中各项操作的自动化管理具有十分重要的意义。本文以SCO Unix OpnServer 5.0 为便,介绍实现应用服务程序的自动启停方法。
 
启停过程 
SCO Unix OpenServer系统启动和关机时调用的各种程序存放在/etc/init.d目录下,并在/etc/rcn.d目录(其中n代表运行级: 0、1、2、3)中建立了相应的符号连接,对应系统开关时所执行的各项步骤。Unix启动过程由boot程序引导核心:/stand/unix开始,随后启动一个称为init的进程,顺序执行/etc/inittab文件中所列的程序项,最后引导系统进入特定的运行级。相关的文件和目录主要有: 
/etc/default/boot 
/etc/init.d及/etc/rcn,/etc/rcn.d (n代表运行级) 
其中/etc/default/boot是一个文本文件,规定了Unix引导过程的参数设置。/etc/inittab也是一个文本文件,其内容由独立的命令行组成。init进程顺序读取各行,生成相应的运行级,并指向文件/etc/rcn和目录/etc/rcn.d。/etc/rcn是一个shell程序,当系统进入运行级n时,init就将对应的rcn投入运行。例如运行级2对应文件/etc/rc2和目录/etc/rc2.d,/etc/rc2的主要任务是运行/etc/rc2.d目录下的所有shell程序文件,优先顺序由程序名来区分。 
在任何时候,系统只能处在一个运行级上,即系统的运行模式惟一。SCO Unix OpenServer设置了6种运行模式:0、1、2、3、6、S。其中0代表关机,1和S代表进入单用户进行系统维护,6代表系统重启,2和3表示进入多用户,3比2多了启动远程文件共享(RFS)和相应的守护进程,使本机可以连到RFS网络,以实现网络资源共享。 
本文示例要求Unix系统引导完毕后自动启动Informix-Online 数据库系统,然后启动中间件产品(TongLINK/TongEASY通信软件,位于/home/tong目录下)及备份代理服务程序/etc/bkupexec/agent.be,关机时按以上反方向顺序自动关闭程序和处理数据。 
根据以上要求,可手动编写两个shell程序:DBcomm及Backup。DBcomm处理数据库及通信软件,Backup处理备份代理服务程序。 
数据库及通信软件的启停处理 
1.以server用户注册,建立shell程序start.sh 和 stop.sh,负责数据库及通信进程的启动和关闭。 
$vi /home/server/bin/start.sh 
oninit 
sleep 5 
tld 
tminit 
$vi /home/server/bin/stop.sh 
tld stop 
tmend -97 
onmode -ky 
sleep 5 
2.以root用户注册,在/etc/init.d/目录下建立DBcomm 程序。 
#vi /etc/init.d/DBcomm 
PATH=/bin:/usr/bin:/etc 
export PATH 
rval=0 
set_return() { 
/*实现正常退出*/ 
……  

case $1 in  
/*执行start.sh程序,启动数据库和通信进程*/  
 ‘start’)  
if [ -x /home/server/bin/start.sh ]; then 
  su -l server -c start.sh 
  set_return 
else 
  rval=2 
fi 
;; 
/*执行stop.sh,关闭数据库及通信进程*/ 
 ‘stop’)  
if [ -x /home/server/bin/stop.sh ]; then 
   su -l server -c stop.sh 
   set_return 
else 
   rval=2 
fi 
;; 
*) 
echo “usage: $0 {start|stop}” 
rval=1 
  ;; 
  esac 
  exit $rval 
备份代理服务程序 
  在/etc/init.d目录下建立备份代理服务程序:Backup。 
  #vi /etc/init.d/Backup 
  DESTDIR=/etc/bkupexec 
  if [ ! -d $DESTDIR ]then 
   exit 
  fi 
  case “$1” in 
/*启动备份代理进程*/ 
   ‘start’)  
   if [ -x $DESTDIR/agent.be ]then 
     $DESTDIR/agent.be -c $DESTDIR/agent.cfg 2>$DESTDIR/agent.log &  
   fi 
;; 
/*关闭备份代理进程*/ 
   ‘stop’)  
    pid=` ps -e|grep agent.be|sed -e ‘s/^ *//’ -e ‘s/.*//’` /*查找进程*/ 
   if [ “${pid}”!= “” ]then 
    kill ${pid} 
   fi 
;; 
   *) 
   echo “Usage: /etc/init.d/agent.be { start | stop }” 
   ;; 
   esac 
符号连接 
  首先,建立到目录/etc/rc2.d下的符号连接,以实现Unix系统引导后的自动调用。该目录下程序均以P或S开头命名,P开头的优先运行,S次之,P和S后的数字按从小到大顺序执行。假设S后的数字最大已到99,执行以下命令: 
  #ln -s /etc/init.d/DBcomm /etc/rc2.d/S100DBcomm 
  #ln -s /etc/init.d/Backup /etc/rc2.d/S101Backup 
  然后,建立到目录/etc/rc0.d下的符号连接,以实现Unix系统关机前的自动调用。该目录下的程序均以K打头,运行顺序同上。因为首先需要安全关闭应用程序,所以新建连接K后的数字要小于现有数字。假设当前最小为10,执行以下命令: 
  #ln -s /etc/init.d/Backup /etc/rc0.d/K05Backup 
  #ln -s /etc/init.d/DBcomm /etc/rc0.d/K06DBcomm 
小 结 
  经过上述设置后,每当在Unix系统中追加一项应用服务程序时,只需在/etc/init.d中编写类似shell程序,同时建立到/etc/rc0.d 和/etc/rc2.d的符号连接,便可轻松实现应用服务程序的自动化管理,数据也得到了充分有效的保护。 [/color:2e66d995a1]

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网