歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> 關於Unix

Unix系統應用服務程序的自動啟停


目前,許多銀行的服務器端操作系統彩的是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的符號連接,便可輕松實現應用服務程序的自動化管理,數據也得到了充分有效的保護。
Copyright © Linux教程網 All Rights Reserved