#!/bin/bash
script_name=$0
InstanceName=$1
operate=$2
#tomcat部署路径
TOMCAT_HOME=/home/channelfone/apache-tomcat-8.5.34
#tomcat多实例部署路径
APPS_PATH=apps
#MEMORY_CONF=" -server -Xms64m -Xmx128m -XX:PermSize=16m -XX:MaxPermSize=64m -XX:MaxNewSize=64m"
#export CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9991"
#export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64
usage()
{
echo ""
echo "Usage: $script_name InstanceName {start|stop|restart|status} [ Tomcat service options ]"
echo "Example: $script_name BaikuPassportV2 start"
echo ""
exit 1
}
#检查实例是否存在
Instance=`ls -l "$TOMCAT_HOME/$APPS_PATH"|sed '1d'|awk '{print $NF}'|grep "$1"`
if [ ! -n "$InstanceName" ] && [ ! -n "$operate" ]
then
usage
else
if [ "$InstanceName" != "$Instance" ]
then
echo "$InstanceName don't exist,Please retry!"
exit 1
fi
fi
getPID()
{
PID=`ps -ef |grep -v 'grep'|grep "home/channelfone/"|grep "/$InstanceName/"|grep tomcat|awk '{print $2}'`
}
getMem()
{
MemSize=`grep -ai "$InstanceName" runCache.conf|awk -F= '{print $2}'`
MEMORY_CONF="-server -Xms"$MemSize"m -Xmx"$MemSize"m -XX:MaxNewSize=`expr $((MemSize)) / 2`m -XX:PermSize=128m -XX:MaxPermSize=512m"
}
TomcatStart()
{
getPID
getMem
if [ ! -n "$PID" ]
then
export CATALINA_HOME="$TOMCAT_HOME"
export CATALINA_BASE="$CATALINA_HOME/$APPS_PATH/$InstanceName"
export JAVA_OPTS="$MEMORY_CONF"
bash $CATALINA_HOME/bin/startup.sh > /dev/null 2>&1
echo -n "Starting Tomcat"
tomcatStatus=1
while [[ $tomcatStatus == 1 ]]
do
netstat -an|grep "$PORT" > /dev/null 2>&1
if [ $? == 0 ]
then
echo -e "\033[32m "[OK]" \033[0m"
exit 1
else
echo -n "."
sleep 1
fi
done
else
echo "$PID"
echo "$InstanceName(pid:$PID) has already running..."
fi
}
TomcatStop()
{
getPID
if [ ! -n "$PID" ]
then
echo "$InstanceName is not running..."
else
# export CATALINA_HOME="$TOMCAT_HOME"
# export CATALINA_BASE="$CATALINA_HOME/$APPS_PATH/$InstanceName"
#
# bash $CATALINA_HOME/bin/shutdown.sh > /dev/null 2>&1
echo -n "Stopping Tomcat"
kill -9 $PID
tomcatStatus=1
while [[ $tomcatStatus == 1 ]]
do
getPID
if [ ! -n "$PID" ]
then
echo -e "\033[32m "[OK]" \033[0m"
exit 1
else
echo -n "."
sleep 1
fi
done
fi
}
TomcatStatus()
{
getPID
if [ ! -n "$PID" ]
then
echo "$InstanceName is not running..."
else
echo "$InstanceName(pid:$PID) is running..."
fi
}
case "$operate" in
start )
TomcatStart
;;
stop )
TomcatStop
;;
restart )
TomcatsStop
TomcatsStart
;;
status )
TomcatStatus
;;
* )
usage
;;
esac