参考文章:
1.完美解决Linux服务器tomcat开机自启动问题
http://www.cnblogs.com/zdz8207/p/linux-tomcat-autostartup.html
2.Tomcat重启脚本restart.sh停止脚本stop.sh
http://www.cnblogs.com/zdz8207/p/Tomcat-restart-shell.html
Tomcat 按照后提供了如下脚本。
问题1:
可以看出只有启动脚本(startup.sh) 关停脚本(shutdown.sh),并没有重启的脚本。
问题2:
虽然提供了shutdown.sh . 但是实际部署中经常会出现死进程形象,无法杀掉进程需要查询进程号kill掉才能正常启动。
综合上面几个问题,我编写了如下脚本。
启动 start.sh
关停 stop.sh
重启 restart.sh
启动
封装原有的脚本,没做任何额外的处理。
关停
先用tomcat 提供的脚本去关停服务,若没用成功。 通过 kill -9 PID 的方式,强制杀死服务。
重启
其实以上2个脚本的整合。 先关停,后启动。
下面的脚本都需要先定义 TOMCAT_HOME 环境变量。我的环境变量定义在了 /etc/profile
启动 start.sh
#!/bin/bash
TOMCAT_DIR=${TOMCAT_HOME}
TOMCAT_PATH=${TOMCAT_DIR}/bin
echo "TOMCAT_PATH is $TOMCAT_PATH"
#startup tomcat server
echo "Try to startup tomcat"
sh "$TOMCAT_PATH/startup.sh"
sleep 10s
PID=`ps aux | grep ${TOMCAT_DIR} | grep java | awk '{print $2}'`
if [ -n "$PID" ]; then
echo "Restart tomcat successfully!"
else
echo "Fail to startup tomcat"
exit 1
fi
关停 stop.sh
#!/bin/bash
TOMCAT_DIR=${TOMCAT_HOME}
TOMCAT_PATH=${TOMCAT_DIR}/bin
echo "TOMCAT_PATH is $TOMCAT_PATH"
#Shutdowm tomcat server
PID=`ps aux | grep ${TOMCAT_DIR} | grep java | awk '{print $2}'`
if [ -n "$PID" ]; then
echo "Will kill tomcat: $PID"
echo "Use shutdown.sh"
sh "$TOMCAT_PATH/shutdown.sh"
sleep 20s
else
echo "No Tomcat Process $PID"
fi
PID2=`ps aux | grep ${TOMCAT_DIR} | grep java | awk '{print $2}'`
if [ -n "$PID2" ]; then
echo "Try to kill $PID2"
echo 'kill -9 PID'
kill -9 $PID2
sleep 20s
else
echo "No Tomcat Process $PID2"
fi
重启 restart.sh
#!/bin/bash
TOMCAT_DIR=${TOMCAT_HOME}
TOMCAT_PATH=${TOMCAT_DIR}/bin
echo "TOMCAT_PATH is $TOMCAT_PATH"
#Shutdowm tomcat server
PID=`ps aux | grep ${TOMCAT_DIR} | grep java | awk '{print $2}'`
if [ -n "$PID" ]; then
echo "Will kill tomcat: $PID"
echo "Use shutdown.sh"
sh "$TOMCAT_PATH/shutdown.sh"
sleep 20s
else
echo "No Tomcat Process $PID"
fi
PID2=`ps aux | grep ${TOMCAT_DIR} | grep java | awk '{print $2}'`
if [ -n "$PID2" ]; then
echo "Try to kill $PID2"
echo 'kill -9 PID'
kill -9 $PID2
sleep 20s
else
echo "No Tomcat Process $PID2"
fi
#Startup tomcat server
echo "Try to startup tomcat"
sh "$TOMCAT_PATH/startup.sh"
sleep 10s
PID=`ps aux | grep ${TOMCAT_DIR} | grep java | awk '{print $2}'`
if [ -n "$PID" ]; then
echo "Restart tomcat successfully!"
else
echo "Fail to startup tomcat"
exit 1
fi