tomcat 的shell脚本管理

Tomcat 脚本管理

该脚本用于管理tomcat,涉及到启动,重启,停止,批量启动,批量重启,查看状态,查看端口等。

tomcat 统一部署至某一路径,其端口的配置已通过修改,统一配置在 catalina.properties 文件中。

使用的命令介绍:

tomcat -help 来查看,有哪些使用参数。

参考脚本如下:

#!/bin/sh

fir=$1

second=$2

a=(" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ")

b=(" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ")

c=(" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ")

TOMCAT_HOME=/opt/oracle/tomcat

 

sprint_status()

{

echo 

echo "Processes in Instance: `hostname`"

echo "-----------------------------+------------+-----------"

echo "instance                              |  status    |   pid     "  

echo "-----------------------------+------------+-----------"

  for i in `ls -l $TOMCAT_HOME| awk '/^d/{ print $NF}'`

    do

    str=`echo $i | awk '{print length($1)}'`     

    ps aux | grep -w $i  | grep -v "grep" | grep -vw "sh" | grep -vw "bash -c" > /dev/null 

    ret=$?

    if [ $ret -eq 0 ]; then

       echo "$i${a:$str}|  Alive     |   `ps aux | grep -w $i|grep -vw "sh" |grep -v "grep"|grep -vw "bash -c"| awk '{print $2}'`   "

     else

       echo "$i${a:$str}|  Down      |   N/A   "

    fi

   done

   echo  

  exit

}

 

sprint_status_port()

{

echo

echo "Processes in Instance: `hostname`"

echo "-----------------------------+------------+-----------------------+-----------"

echo "instance                     |  status    |         ports         |   pid     "

echo "-----------------------------+------------+-----------------------+-----------"

  for i in `ls -l $TOMCAT_HOME| awk '/^d/{print $NF}'`

    do

    str=`echo $i | awk '{print length($1)}'`

    ajp_port=`cat $TOMCAT_HOME/$i/conf/catalina.properties 2>&1 | grep ajp.port | awk '{print "ajp:" substr($1,10)}'`

    http_port=`cat $TOMCAT_HOME/$i/conf/catalina.properties 2>&1 | grep http.port | awk '{print "http:" substr($1,11)}'`

    ps aux | grep -w $i | grep -v "grep"|grep -vw "sh" > /dev/null

    ret=$?

    if [ $ret -eq 0 ]; then

       echo "$i${a:$str}|  Alive     | $ajp_port   $http_port  |   `ps aux | grep -w $i|grep -vw "sh" |grep -v "grep"|grep -vw "bash -c" | awk '{print $2}'`  "

     else

       echo "$i${a:$str}|  Down      | ajp:N/A    http:N/A   |   N/A   "

    fi

   done

echo

}

 

sprint_status_app()

{

echo

echo "Processes in Instance: `hostname`"

echo "-----------------------------+------------+--------------------------------------+-----------"

echo "instance                     |  status    |             applications             |   pid     "

echo "-----------------------------+------------+--------------------------------------+-----------"

for i in `ls -l $TOMCAT_HOME| awk '/^d/{print $NF}'`

do

fir_str=`echo $i | awk '{print length($1)}'` 

  for y in `ls -l $TOMCAT_HOME/$i/webapps 2>&1| awk '/^d/{print $NF}'`

    do

    sd_str=`echo $y | awk '{print length($1)}'`

    ps aux | grep -w $i | grep -v "grep" | grep -vw "sh"|grep -vw "bash -c"  > /dev/null

    ret=$?

    if [ $ret -eq 0 ]; then

          echo "$i${a:$fir_str}|  Alive     |   $y${b:$sd_str}|   `ps aux | grep -w $i|grep -vw "sh" |grep -v "grep"|grep -vw "bash -c" | awk '{print $2}'`  "

     else

        echo "$i${a:$fir_str}|  Down      |   $y${b:$sd_str}|   N/A   "

    fi

   done

done

echo

}

 

start_app()

{

if [ -e $TOMCAT_HOME/$second ];then

   ps -ef | grep -w $second  |grep -vw "sh"| grep -v "grep"|grep -vw "bash -c" > /dev/null

   ret=$?

   if [ $ret -eq 0 ];then

      echo "$second is Alive"

      exit

   else

      cd $TOMCAT_HOME/$second/bin

      sh catalina.sh start >/dev/null

   fi

else

   echo "Usage: $0 $1 {[intance_name]}"

fi

}

 

stop_app()

{

if [ -e $TOMCAT_HOME/$second ];then

   str=`echo $second | awk '{print length($1)}'`

   ps aux | grep -w $second | grep -vw "sh" | grep -v "grep"|grep -vw "bash -c" > /dev/null

   ret=$?

   if [ $ret -eq 0 ]; then

      cd $TOMCAT_HOME/$second/bin

      sh catalina.sh stop  > /dev/null

      sleep 5

      ps aux | grep -w $second | grep -vw "sh" | grep -v "grep"|grep -vw "bash -c" > /dev/null

      ret=$?

      if [ $ret -eq 0 ];then

         echo -e "Stopping $second from Script:${c:$str}\033[31m [false] \033[0m"

         sleep 2

         kill -9 `ps aux | grep -w $second | grep -vw "sh" |grep -v "grep" |awk '{print $2}'` 2>/dev/null

         ps aux | grep -w $second | grep -vw "sh" | grep -v "grep"|grep -vw "bash -c" > /dev/null

         ret=$?

         if [ $ret -eq 0 ]; then

             echo -e "Stopping $second from kill:  ${c:$str}\033[31m [false] \033[0m"

         else

             echo -e "Stopping $second from Kill:  ${c:$str}\033[32m [ok] \033[0m"

         fi

      else

         echo -e "Stoping $second from Script:${c:$str}\033[32m [OK] \033[0m"

      fi

   else

      echo "$second is Down"

   fi

   RETVAL=$?

else

   echo "Usage: $0 $1 {[intance_name]}"

fi

}

 

start_all()

{

   for i in `ls -l $TOMCAT_HOME| awk '/^d/{ print $NF}'`

    do

      str=`echo $i | awk '{print length($1)}'`

      ps aux | grep -w $i | grep -v "grep"|grep -vw "sh"|grep -vw "bash -c" > /dev/null

      ret=$?

      if [ $ret -eq 0 ];then

        echo "$i is Alive"

      else

          cd $TOMCAT_HOME/$i/bin

          sh catalina.sh start >/dev/null 

          sleep 5

          ps aux | grep -w $i | grep -v "grep"|grep -vw "sh"|grep -vw "bash -c" > /dev/null

          ret=$?

          if [ $ret -eq 0 ]; then

               echo -e "Starting $i :${b:$str}\033[32m [OK] \033[0m"

          else

               echo -e "Starting $i :${b:$str}\033[31m [false] \033[0m"

          fi

      fi

   done

}

 

stop_all()

{

   for i in `ls -l $TOMCAT_HOME| awk '/^d/{ print $NF}'`

    do

     str=`echo $i | awk '{print length($1)}'`

     ps aux | grep -w $i | grep -v "grep"|grep -vw "sh"|grep -vw "bash -c"  > /dev/null

     ret=$?

     if [ $ret -eq 0 ];then

       cd $TOMCAT_HOME/$i/bin

       sh catalina.sh stop >/dev/null 

       sleep 5

       ps aux | grep -w $i | grep -v "grep"|grep -vw "sh"|grep -vw "bash -c" > /dev/null

       ret=$?

       if [ $ret -eq 0 ];then

         echo -e "Stopping $i from Script:${c:$str}\033[31m [false] \033[0m"

         sleep 2

         kill -9 `ps aux | grep -w $i | grep -vw "sh" | grep -vw "grep"|awk '{print $2}'` 2>/dev/null

         ps aux | grep -w $i | grep -v "grep" | grep -vw "sh"|grep -vw "bash -c" > /dev/null

         ret=$?

         if [ $ret -eq 0 ]; then

              echo -e "Stopping $i from Kill:  ${c:$str}\033[31m [false] \033[0m"

          else

              echo -e "Stopping $i from Kill:  ${c:$str}\033[32m [ok] \033[0m"

         fi

        else  

             echo -e "Stopping $i from Script:${c:$str}\033[32m [OK] \033[0m"

       fi

      else

         echo "$i is Down" 

     fi

   done

}

 

print_help()

{

  echo

  echo "Permitted <scope>/<command>/<options> combinations are:"

  echo

  echo "  scope     command      instance"

  echo "-------    ---------    ----------"

  echo "[<scope>]  status                      - Get managed instance status"

  echo "[<scope>]  status           -p         - Get managed instance status and ports"

  echo "[<scope>]  status          -app        - Get managed instance status and applications"

  echo "[<scope>]  start     [<instance_name>] - Start tomcat instance"

  echo "[<scope>]  stop      [<instance_name>] - Stop tomcat instance"

  echo "[<scope>]  restart   [<instance_name>] - restart tomcat instance"

  echo "[<scope>]  startall                    - Start all Down tomcat instance"

  echo "[<scope>]  stopall                     - Stop all Alive tomcat instance"

  echo "[<scope>]  restartall                  - restart all  tomcat instance"

  echo

}

 

info_log()

{

str=`echo $second | awk '{print length($1)}'`

x=0

while((x<180))

do

x=$(($x+1))

now_num=`wc -l /opt/oracle/tomcat/$second/logs/catalina.out  | awk '{print $1}'`

sleep 1

new_num=`wc -l /opt/oracle/tomcat/$second/logs/catalina.out  | awk '{print $1}'`

retl=$(($new_num-$now_num))

file_info=`tail -n $retl /opt/oracle/tomcat/$second/logs/catalina.out | awk '{if(($2~/Server/) && ($3~/startup/)) print}'`

number=`echo $file_info | wc -c | awk '{print $1}'`

if [ $number -gt 5 ];then

 cd /opt/oracle/tomcat/$second/logs

 tail -n $retl catalina.out

 echo

 ps aux | grep -w $second | grep -vw "sh"| grep -v "grep"|grep -vw "bash -c" > /dev/null

 ret=$?

 if [ $ret -eq 0 ];then

     echo -e "Starting $second :${b:$str}\033[32m [OK] \033[0m"

  else

     echo -e "Starting $second :${b:$str}\033[31m [false] \033[0m" 

 fi

 exit

else

 cd /opt/oracle/tomcat/$second/logs

 tail -n $retl catalina.out

fi

done

}

 

if [ $# -eq 0 ];then

   echo 

   echo "The Script Version : 1.6"

   echo "The Script Update time : 2011-12-22 14:15"  

   echo "Usage: $0  -help"

fi

 

if [ $# -eq 1 ];then

  case "$1" in

  status)

  sprint_status

  ;;

  -help)

  print_help

  ;;

  start)

  echo "Usage: $0 $1 {[<instance_name>]}"

  ;;

  stop)

  echo "Usage: $0 $1 {[<instance_name>]}"

  ;;

  startall)

  start_all

  ;;

  stopall)

  stop_all

  ;;

  restartall)

  stop_all

  sleep 3

  start_all

  ;;

  *)

  echo "Usage: $0  -help"

  exit

  esac

fi

 

if [ $# -eq 2 ];

  then

  case "$1" in

  status)

   if [ $second == -p ];then

    sprint_status_port   

   elif 

      [ $second = -app ];then

      sprint_status_app

   else

     echo "Usage: $0 $1 {-p|-app}"

   fi

  ;;

  start)

    start_app

    info_log

  ;;

  stop)

    stop_app

  ;;

  restart)

    stop_app

    sleep 2

    start_app

    info_log

  ;;

  *)

    echo $"Usage: $0 {status|start|stop|startall|stopall|-help} {[<intance_name>]}"

    exit

  esac

 

fi

 

 

posted @ 2020-05-06 13:07  流年浮生  阅读(176)  评论(0)    收藏  举报