管理Tomcat服务的Daemon脚本

2019-05-26 09:37:31 浏览数 (1)

版权声明:本文为木偶人shaon原创文章,转载请注明原文地址,非常感谢。 https://cloud.tencent.com/developer/article/1434696

一、脚本功能

tomcat 的启动,重启,实时查看日志

#!/bin/bash

funtions:

chkconfig: 345 80 15

description: Multiple tomcats service management script.

author: shaonbean

Source function library.

. /etc/rc.d/init.d/functions

tomcat name

TOMCAT_PORT=$1

TOMCAT=tomcat_$1

TOMCAT_HOME=/opt/tomcats/${TOMCAT}

TOMCAT_BIN=${TOMCAT_HOME}/bin

#TOMCAT_LOG=${TOMCAT_HOME/logs/catalina.$(date %Y-%m-%d).out

TOMCAT_LOG=${TOMCAT_HOME}/logs/catalina.out

source function library.

. /etc/rc.d/init.d/functions

if -f ${TOMCAT_BIN}/catalina.sh ;then

代码语言:txt复制
    echo "${TOMCAT} is valilable !!!"  
代码语言:txt复制
  else
代码语言:txt复制
    echo "${TOMCAT} not valilable !!!"
代码语言:txt复制
    exit

fi

RETVAL=$?

start(){

代码语言:txt复制
     checkrun
代码语言:txt复制
     if [ $RETVAL -eq 0 ]; then  
代码语言:txt复制
             echo "-- Starting ${TOMCAT}... --"  
代码语言:txt复制
             bash ${TOMCAT_BIN}/startup.sh  
代码语言:txt复制
             touch /var/lock/subsys/${TOMCAT_PORT}
代码语言:txt复制
             checklog 
代码语言:txt复制
             status
代码语言:txt复制
     else  
代码语言:txt复制
             echo "-- ${TOMCAT} already running !"  
代码语言:txt复制
     fi  

}

停止某一台tomcat,如果是重启则带re参数,表示不查看日志,等待启动时再提示查看

stop(){

代码语言:txt复制
     checkrun  
代码语言:txt复制
     if [ $RETVAL -eq 1 ]; then  
代码语言:txt复制
             echo "-- Shutting down tomcat..."  
代码语言:txt复制
             ${TOMCAT_BIN}/shutdown.sh  
代码语言:txt复制
             if [ "$1" != "re" ]; then
代码语言:txt复制
     checklog
代码语言:txt复制
             else
代码语言:txt复制
               sleep 5
代码语言:txt复制
             fi
代码语言:txt复制
             rm -rf /var/lock/subsys/${TOMCAT_PORT} 
代码语言:txt复制
             status
代码语言:txt复制
        else  
代码语言:txt复制
             echo "-- ${TOMCAT} not running"  
代码语言:txt复制
     fi  
代码语言:txt复制
   }  

status(){

代码语言:txt复制
     checkrun
代码语言:txt复制
     if [ $RETVAL -eq 1 ]; then
代码语言:txt复制
             echo -n "-- ${TOMCAT} ( pid "  
代码语言:txt复制
             ps ax --width=1000 | grep ${TOMCAT_PORT}| grep "[o]rg.apache.catalina.startup.Bootstrap start" | awk '{printf $1 " "}'
代码语言:txt复制
                           echo -n ") is running..."  
代码语言:txt复制
             echo  
代码语言:txt复制
       else
代码语言:txt复制
             echo "-- ${TOMCAT} is stopped"  
代码语言:txt复制
     fi
代码语言:txt复制
     #echo "---------------------------------------------"  

}

查看tomcat日志,带vl参数

log(){

代码语言:txt复制
     status
代码语言:txt复制
     checklog yes

}

如果tomcat正在运行,强行杀死tomcat进程,关闭tomcat

kill(){

代码语言:txt复制
     checkrun
代码语言:txt复制
     if [ $RETVAL -eq 1 ]; then
代码语言:txt复制
         read -p "-- Do you really want to kill ${TOMCAT_PORT} progress?[no])" answer
代码语言:txt复制
         case $answer in
代码语言:txt复制
             Y|y|YES|yes|Yes)
代码语言:txt复制
                 ps ax --width=1000 | grep ${TOMCAT_PORT} | grep "[o]rg.apache.catalina.startup.Bootstrap start" | awk '{printf $1 " "}'| xargs kill -9  
代码语言:txt复制
                 status
代码语言:txt复制
             ;;
代码语言:txt复制
             *);;
代码语言:txt复制
         esac
代码语言:txt复制
     else
代码语言:txt复制
         echo "-- exist with ${TOMCAT_PORT} still running..."
代码语言:txt复制
     fi
代码语言:txt复制
  }   

checkrun(){

代码语言:txt复制
        ps ax --width=1000 |grep ${TOMCAT_PORT}| grep "[o]rg.apache.catalina.startup.Bootstrap start" | awk '{printf $1 "n"}' | wc -l > /var/run/tomcat_process_count
代码语言:txt复制
        read line < /var/run/tomcat_process_count 
代码语言:txt复制
        if [ $line -gt 0 ]; then  
代码语言:txt复制
               RETVAL=1  
代码语言:txt复制
               return $RETVAL  
代码语言:txt复制
          else  
代码语言:txt复制
               RETVAL=0  
代码语言:txt复制
               return $RETVAL  
代码语言:txt复制
        fi  

}

如果是直接查看日志viewlog,则不提示输入yes,否则就是被stop和start调用,需提示是否查看日志

checklog(){

代码语言:txt复制
        answer=$1
代码语言:txt复制
        if [ "$answer" != "yes" ]; then
代码语言:txt复制
           read -p "-- See Catalina.out log to check $2 status?[yes])" answer
代码语言:txt复制
        fi
代码语言:txt复制
        case $answer in
代码语言:txt复制
                        Y|y|YES|yes|Yes|"")
代码语言:txt复制
                        tail -f ${TOMCAT_LOG}
代码语言:txt复制
                                         ;;
代码语言:txt复制
                                         *)
代码语言:txt复制
                                #    status
代码语言:txt复制
                                #    exit 0
代码语言:txt复制
                                         ;;
代码语言:txt复制
        esac
代码语言:txt复制
       }

checkexist(){

代码语言:txt复制
          if [ ! -d ${TOMCAT_HOME} ]; then
代码语言:txt复制
              echo "-- ${TOMCAT_HOME} does not exist."
代码语言:txt复制
              exit 0
代码语言:txt复制
          fi
代码语言:txt复制
         }      

case "$2" in

代码语言:txt复制
         start)  
代码语言:txt复制
              checkexist
代码语言:txt复制
              start  
代码语言:txt复制
              exit 0
代码语言:txt复制
              ;;  
代码语言:txt复制
          stop)  
代码语言:txt复制
              checkexist
代码语言:txt复制
              stop  
代码语言:txt复制
              exit 0
代码语言:txt复制
              ;;  
代码语言:txt复制
       restart)  
代码语言:txt复制
              checkexist
代码语言:txt复制
              stop re 
代码语言:txt复制
              start 
代码语言:txt复制
              exit 0
代码语言:txt复制
              ;;  
代码语言:txt复制
        status)  
代码语言:txt复制
              checkexist
代码语言:txt复制
              status  
代码语言:txt复制
     #${TOMCAT_BIN}/catalina.sh version  
代码语言:txt复制
              exit 0
代码语言:txt复制
              ;;  
代码语言:txt复制
          log)
代码语言:txt复制
             checkexist
代码语言:txt复制
             log
代码语言:txt复制
             exit 0
代码语言:txt复制
             ;;
代码语言:txt复制
         kill)
代码语言:txt复制
             checkexist
代码语言:txt复制
             status
代码语言:txt复制
             kill
代码语言:txt复制
             exit 0
代码语言:txt复制
             ;;
代码语言:txt复制
            *)  
代码语言:txt复制
     echo "Usage: $0 {start|stop|restart|status|log|kill}"  
代码语言:txt复制
     echo "service tomcat {8080|8081|..} {start|stop|restart|status|log|kill}"  

esac

exit 0

0 人点赞