linux系統啓動時候同時啓動tomcat(多個)

由於公司項目需要,將一個大項目分成N多個子系統,而這些又全部部署在同一個目錄下不同的tomcat裏,每次一斷電,測試服務器上的服務就要一個一個啓動,就想着能不能寫個shell腳本一次搞定,研究一上午,弄了個大概,還有許多地方需要優化,稍候會說,先記錄一下,省的以後找起來麻煩。
思路很簡單:
1、系統啓動的時候順便啓動一個服務,這個服務用來調用shell腳本
2、編寫一個shell腳本,遍歷目錄下所有的tomcat,找到startup.sh並執行
話不多說,來看代碼。
①在/etc/init.d下新建一個文件tomcat-auto-start-service

vi /etc/init.d/tomcat-auto-start-service

內容如下:

#!/bin/sh  
# chkconfig: 345 99 10  
# description: Auto-starts tomcat  
# /etc/init.d/tomcatd  
# Tomcat auto-start  
# Source function library.  
#. /etc/init.d/functions  
# source networking configuration.  
#. /etc/sysconfig/network
ETVAL=0
start()
{
./startTomcat.sh
}  
case "$1" in  
 start)   
        start  
        ;;  
esac  
exit $RETVAL 

該腳本大概意思是該服務有一個start方法,下面會有用到,而start方法只做一件事就是調用下面的shell腳本。

另外在根目錄下新建一個startTomcat.sh,內容如下

#!/bin/bash  
function ergodic(){  
    for file in ` ls $1 `  
    do 
    if [ "$file"x = "startup.sh"x ]; 
    then
        .$1"/"$file
        sleep 5
             echo $1"/"$file
        elif  [ -d $1"/"$file ]  
        then  
             ergodic $1"/"$file 
        fi  
    done  
}  
INIT_PATH="/usr/local/tomcat"  
ergodic $INIT_PATH  

該腳本的大概意思:傳入初始化路徑,遍歷該目錄,如果遇到文件名爲startup.sh,則執行,否則遞歸調用,並傳入當前目錄
(語法我也是一瓶子不滿半瓶子咣噹的,請大神來吐槽)

:wq

②給該文件授權,反正是公司內部測試服務器,爲了方便,授權777

chmod -R 777 tomcat-auto-start-service

③掛載,具體rcX.d是幹嘛的,有興趣的童鞋可以研究一下,需要說明的是最後的命名,以S或者以K開頭是有原因的,根據不同需要可能是S開頭,也可能是K開頭,之後的數字代表他們的啓動順序

ln -s /etc/init.d/tomcat-auto-start-service /etc/rc2.d/S16TomcatAutoStart

④設置自動啓動,其實也就是加入到啓動服務中

chkconfig --add tomcat-auto-start-service

⑤重啓,驗證

reboot

注:此後也可以用service tomcat-auto-start-service start 來啓動所有的tomcat服務

需要進一步優化:
一、如果tomcat/bin/startup.sh沒有權限,不能自動授權
二、只有start服務沒有stop和restart(由於暫時只有這一個需求,先寫這一個功能,程序猿最好不要過度設計)
三、這種遍歷目錄查找startup.sh的方法貌似不太好,然而暫時未想到其他方法,希望看到的大神給指點一二

以此爲記,繼續努力。

參考文獻:
http://blog.csdn.net/wangli61289/article/details/37924785
http://hw1287789687.iteye.com/blog/1766217

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章