Shell脚本重启tomcat应用服务

#!/bin/bash

#tomcat path
tomcat_home=/tomcat/tomcat1
start_tomcat=$tomcat_home/bin/startup.sh

#select which web to restart
echo "0 : exit"
echo "1 : /tomcat/tomcat1"
echo "2 : /tomcat/tomcat2"
read -p "please select the web to restart:" selectWeb

case $selectWeb in
1)
    tomcat_home=/tomcat/tomcat1
    ;;
2)
    tomcat_home=/tomcat/tomcat2
    ;;
*)
    exit 0
    ;;
esac

#echo $tomcat_home

#show web pid info
echo "---------------------------------------------------------------------------"
ps -ef|grep ${tomcat_home}|grep -v grep
echo "---------------------------------------------------------------------------"

#get web pids
#pid=`ps -ef|grep $tomcat_home|grep -v grep|awk '{print $2}'`
pid=$(ps -ef|grep $tomcat_home|grep -v grep|awk '{print $2}')

#echo ${#pid[@]}

if [ "${pid[0]}" = "" ]
then 
    echo "the web is not running,please execute startup.sh"
    exit 0
fi

#confirm kill pid
echo -ne "CONFIRM : before start ${tomcat_home},should kill the same run,kill pid "${pid[*]}" (y/n)?"
read confirmInput

case $confirmInput in
[yY][eE][sS]|[yY])
    
    ##杀死进程
    kill -9 ${pid[*]}
    ##删除应用临时数据
    rm -rf $tomcat_home/work/Catalina/localhost/*
    ##倒计时5秒钟
    seconds_left=5
    echo "please wait ${seconds_left} seconds......"
    while [ ${seconds_left} -gt 0 ]; do
       echo -n "-------------------------------------${seconds_left}-------------------------------------"
       sleep 1
       seconds_left=$(($seconds_left - 1))
       echo -ne "\r        \r"
    done
    ##重启tomcat应用,使用nohup,否则退出ssh的时候,应用的进程会被杀掉
    #restart tomcat
    nohup ${start_tomcat} >> $tomcat_home/logs/catalina.out 2>&1 &
    #nohup ${start_tomcat}&
    #show catalina.out logs
    tail -f $tomcat_home/logs/catalina.out
    ;;
    ##脚本执行的最后,打开的是监控日志catalina.out,这个时候要使用ctrl+c退出,不能使用ctrl+z退
    ##出,否则会有问题,直到tail -f xxxx/catalina.out进程被杀掉
*)
    echo "restart ${tomcat_home} is canceled"
    ;;
esac

猜你喜欢

转载自blog.csdn.net/ystyaoshengting/article/details/82421310