歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> Unix系統應用服務程序的自動啟停

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

日期:2017/2/27 14:16:04   编辑:更多Linux
  目前,許多銀行的服務器端操作系統彩的是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 {startstop}” 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 -egrep agent.besed -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的符號連接,便可輕松實現應用服務程序的自動化管理,數據也得到了充分有效的保護。



   #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