公司應用是跑在tomcat裏邊的,tomcat每次重啓、查看日誌很不方便,所以簡單寫了個tomcat的管理腳本。
公司服務器上邊有兩個java應用,所以運行了兩個tomcat,所以腳本是針對兩個tomcat的管理。
腳本命名:tom
tomcat的端口:8300、8200
存放路徑:/bin/tom 同時不要忘了賦予執行權限(#chmod 755 tom)
使用方法:
Usage: $0 <stop|start|restart> <8200|8300>
<stop> stop tomcat
<start> start tomcat
<restart> restart tomcat
<log> show tomcat log
這樣就能跟使用其他服務一樣在系統任何位置對tomcat 啓動、關閉、重啓、查看日誌了。
效果圖:
腳本內容如下:
#!/bin/bash #author: zywang #date: 2013-07-18 #version: v1.0 #function: control tomcat sart|sotp|restart|show log ######global variable NOW_TIME=`date +%F` TOMCAT_PID=`ps aux|grep $2 2>/dev/null|grep '/usr/local/jrock1.6/bin/java'|grep -v grep|tr -s ' '|cut -d' ' -f2` TOMCAT_THREE_START="/opt/data/venus-interface-7-3.0-8300/bin/startup.sh" TOMCAT_TWO_START="/opt/data/fone-player-7-2.1-8200/bin/startup.sh" TOMCAT_LOGNAME="${NOW_TIME}catalina.out" TOMCAT_LOGPATH_THREE="/opt/data/venus-interface-7-3.0-8300/logs/" TOMCAT_LOGPATH_TWO="/opt/data/fone-player-7-2.1-8200/logs/" ######function define #進度條效果(引用前要先定義finial變量) function EFFECT { base=1 while [ $base -lt $finial ] do sleep 0.05 echo -n "." base=$(($base+1)) done echo -e "\e[0;32;1m[OK]\e[0m" } #關閉TOMCAT function SHUT_TOM { local finial=50 if [ -n ${TOMCAT_PID} ];then echo " " echo -en "\e[0;33;1mTOMCAT IS STOPPING\e[0m " kill -9 ${TOMCAT_PID} 2>/dev/null EFFECT echo " " else echo -e "\e[0;33;1m TOMCAT DIDN'T RUN!!!\e[0m" fi } #啓動TOMCAT3.0 function START_TOM_THREE { local finial=100 ${TOMCAT_THREE_START} >/dev/null echo -en "\e[0;33;1mTOMCAT IS STARTING:\e[0m" EFFECT } #啓動TOMCAT2.0 function START_TOM_TWO { local finial=100 ${TOMCAT_TWO_START} >/dev/null echo -en "\e[0;33;1mTOMCAT IS STARTING:\e[0m" EFFECT } #重啓TOMCAT3.0 function RESTART_THREE { SHUT_TOM START_TOM_THREE } #重啓TOMCATr2.0 function RESTART_TWO { SHUT_TOM START_TOM_TWO } #查看TOMCAT3.0日誌 function SHOW_LOG_THREE { tail -f ${TOMCAT_LOGPATH_THREE}${TOMCAT_LOGNAME} 2>/dev/null } #查看TOMCATr2.0日誌 function SHOW_LOG_TWO { tail -f ${TOMCAT_LOGPATH_TWO}${TOMCAT_LOGNAME} 2>/dev/mull } ######excute process if [ $# -ne 2 ];then echo " " echo -e "\e[0;33;1mUsage:$0 <stop|start|restart|log> <8200|8300>\e[0m" echo " " exit 1; fi if [ $1 != "stop" ] && [ $1 != "start" ] && [ $1 != "restart" ] && [ $1 != "log" ];then echo " " echo -e "\e[0;33;1m<PARAMETER1>is just <stop|start|restart|log>\e[0m" echo " " else if [ $2 != "8300" ] && [ $2 != "8200" ];then echo " " echo -e "\e[0;33;1m<PARAMETER2>is just <8200|8300>\e[0m" echo " " fi fi case $1 in "stop") if [ -z ${TOMCAT_PID} ];then echo "TOMCAT DIDN'T RUN ..." else SHUT_TOM fi ;; "start") if [ $2 -eq "8300" ];then if [ -z ${TOMCAT_PID} ];then START_TOM_THREE else echo "TOMCAT IS RUNNING ..." fi else if [ -z ${TOMCAT_PID} ];then START_TOM_TWO else echo "TOMCAT IS RUNNING ..." fi fi ;; "restart") if [ $2 -eq "8300" ];then RESTART_THREE else RESTART_TWO fi ;; "log") if [[ $2 == "8300" ]];then SHOW_LOG_THREE elif [[ $2 == "8200" ]];then SHOW_LOG_TWO else echo "Please Check!!!" fi ;; "-h"|"--help") cat <<EOF Usage: $0 <stop|start|restart> <8200|8300> <stop> stop tomcat <start> start tomcat <restart> restart tomcat <log> show tomcat log EOF ;; *) echo " " echo "Please use: $0 -h or --help for more information" echo " " ;; esac
我自己感覺用起來還挺方便的,如有問題希望大家批評指正!