腳本功能html
使用標籤方式 啓動、中止、重啓 多個Tomcat實例java
腳本使用說明linux
1.假設Tomcat都安裝在/usr/local下,那麼Tomcat的命名方式是這樣子 tomcat1 tomcat2 tomcat3 tomcat4 ...apache
2.使用方式: 腳本路徑 標籤1|標籤2 start|stop|restart|statusbootstrap
case ${GROUP_NAME} in gp1 ) TOMCATS="1 2" ;; gp2 ) TOMCATS="3 4" ;; * ) usage ;; esac
3.例如: gp1 標籤表明是 tomcat1 tomcat2, gp2 標籤表明的是 tomcat3 tomcat4api
4.使用時請修改標籤的名稱tomcat
5.適用於 Tomcat5 Tomcat6 版本bash
腳本運行效果:curl
腳本內容以下:ide
#!/bin/bash # ------------------------------------------------------------------------------------------- # 腳本功能 # 使用標籤方式 啓動、中止、重啓 多個Tomcat實例 # 腳本使用說明 # 1.假設Tomcat都安裝在/usr/local下,那麼Tomcat的命名方式是這樣子 tomcat1 tomcat2 tomcat3 tomcat4 ... # 2.使用方式: 腳本路徑 標籤1|標籤2 start|stop|restart|status # 3.例如: gp1 標籤表明是 tomcat1 tomcat2, gp2 標籤表明的是 tomcat3 tomcat4 # 4.使用時請修改標籤的名稱 # 5.適用於 Tomcat5 Tomcat6 # 關於腳本 # 做者: 雷納科斯 # 博客: http://linux5588.blog.51cto.com # 郵箱: chanyipiaomiao@163.com # 日期: 2013-07-04 # ------------------------------------------------------------------------------------------- # 定義變量 export JAVA_HOME=/usr/local/java # 輸出JAVA_HOME變量 JAVA_BIN="${JAVA_HOME}/bin/java" # JAVA可執行程序路徑 TOMCATS_HOME="/usr/local" # 全部的Tomcat安裝的目錄 SCRIPT_NAME=$0 # 腳本絕對路徑 GROUP_NAME=$1 # 命令行第一個參數 START_STOP=$2 # 命令行第二個參數 HOST="127.0.0.1" # 本機地址用於測試本機Tomcat是否已經啓動完成 STATUS="200 301 302" # 定義正常訪問返回的狀態碼 URI="/index.html" # 定義測試的URI BACKGROUD="\033[37m" # echo 時的 背景顏色 FONTCOLOR="\033[33m" # echo 時的 字體顏色 END="\033[0m" # echo 時的 結束標誌 JAVA_OPTS="" # JAVA啓動選項,爲空就是默認啓動選項 #JAVA_OPTS="-server -Xms512m -Xmx512m -XX:PermSize=16m -XX:MaxPermSize=64m -XX:MaxNewSize=64m \ # -XX:-UseGCOverheadLimit -XX:+UseConcMarkSweepGC" # 幫助提示函數 usage(){ echo echo "Usage: ${SCRIPT_NAME} gp1|gp2 start|stop|restart|status" echo exit 1 } # 判斷命令行參數是否爲空,若是爲空,調用幫助提示函數 if [[ ${GROUP_NAME} == "" || ${START_STOP} == "" ]]; then usage fi # 判斷命令行第一個參數,第一個參數爲要啓動的Tomcat分組,這裏的1 2 3 4是表明的是tomcat1 tomcat2 tomcat3 tomcat4 # 使用時 請修改這裏 case ${GROUP_NAME} in gp1 ) TOMCATS="1 2" ;; gp2 ) TOMCATS="3 4" ;; * ) usage ;; esac # 獲取PID函數 getPID(){ PID=$(ps -ef | grep -v 'grep' | grep "${TOMCAT_NAME}/conf/logging.properties" | awk '{print $2}') } # 單個Tomcat啓動函數 startSingleTomcat(){ TOMCAT_OPTS="-Djava.util.logging.config.file=${TOMCATS_HOME}/${TOMCAT_NAME}/conf/logging.properties \ -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \ -Djava.endorsed.dirs=${TOMCATS_HOME}/${TOMCAT_NAME}/common/endorsed \ -Dcatalina.base=${TOMCATS_HOME}/${TOMCAT_NAME} \ -Dcatalina.home=${TOMCATS_HOME}/${TOMCAT_NAME} \ -Djava.io.tmpdir=${TOMCATS_HOME}/${TOMCAT_NAME}/temp \ -classpath :${TOMCATS_HOME}/${TOMCAT_NAME}/bin/bootstrap.jar:${TOMCATS_HOME}/${TOMCAT_NAME}/bin/commons-logging-api.jar \ org.apache.catalina.startup.Bootstrap start" TOMCAT_LOG="${TOMCATS_HOME}/${TOMCAT_NAME}/logs/catalina.out" ${JAVA_BIN} ${JAVA_OPTS} ${TOMCAT_OPTS} > ${TOMCAT_LOG} 2>&1 & echo $! > /tmp/${TOMCAT_NAME}.pid } # 輸出顏色 printColor(){ echo -ne "${BACKGROUD}${GROUP_NAME}${END} ==> [ ${FONTCOLOR}${TOMCAT_NAME}${END} ] " } # 輸出正在啓動Tomcat printStart(){ printColor echo -n "is starting Please Wait " } # 輸出正在中止Tomcat printStop(){ printColor echo "is stopping,Please wait ..." } # 輸出Tomcat沒有運行 printNotRun(){ printColor echo "is not running..." } # 輸出Tomcat正在運行 printRunning(){ printColor echo "is running... PID: ${PID}" } # 輸出Tomcat沒有,試圖啓動Tomcat printNotRunTryStart(){ printColor echo "is not running, trying start ${TOMCAT_NAME}" } # sleep 函數 sleepFun(){ sleep 0.5 } # 獲得端口 getPort(){ PORT=`cat ${TOMCATS_HOME}/${TOMCAT_NAME}/conf/server.xml | awk '/HTTP\/1.1/ {print $2}' | cut -d'"' -f2` } # 測試端口是否能夠正常訪問 testPortIsOk(){ PORT_OK=1 status=`/usr/bin/curl -I $1 2>/dev/null | head -1 | cut -d" " -f2` for i in $STATUS; do if [[ ${i} == ${status} ]]; then PORT_OK=0 fi done return ${PORT_OK} } # 檢查每一個Tomcat是否已經啓動好 checkTomcat(){ status_ok=1 while [[ ${status_ok} == 1 ]]; do testPortIsOk http://${HOST}:${PORT}${URI} if [[ $? == 0 ]]; then echo " start OK!" status_ok=0 else echo -n "." fi done } # Tomcat啓動函數 start(){ for i in ${TOMCATS}; do TOMCAT_NAME="tomcat${i}" getPID getPort if [[ "${PID}X" != "X" ]]; then printRunning else startSingleTomcat printStart checkTomcat fi done } # Tomcat中止函數 stop(){ for i in ${TOMCATS}; do TOMCAT_NAME="tomcat${i}" getPID if [[ "${PID}X" == "X" ]]; then printNotRun else kill -9 $PID printStop sleepFun fi done } # Tomcat重啓函數 restart(){ for i in ${TOMCATS}; do TOMCAT_NAME="tomcat${i}" getPID getPort if [[ "${PID}X" == "X" ]]; then printNotRunTryStart startSingleTomcat printStart checkTomcat else kill -9 $PID printStop sleepFun startSingleTomcat printStart checkTomcat fi done } # 獲取Tomcat狀態函數 status(){ for i in ${TOMCATS}; do TOMCAT_NAME="tomcat${i}" getPID if [[ "${PID}X" == "X" ]]; then printNotRun else printRunning fi done } # 判斷命令行第二個參數 case ${START_STOP} in start ) start ;; stop ) stop ;; restart ) restart ;; status ) status ;; * ) usage ;; esac