tomcat重启脚本编写其实很容易,无非是找到bin下的shutdown.sh和startup.sh执行就OK了。
#!/bin/bash
TOMCAT=/usr/local/tomcat #tomcat base dir
check_state(){
STATE=`ps aux | grep -v grep | grep tomcat | wc -l` #check tomcat's state
return $STATE
}
check_state
if [ $? -eq 1 ];then
$TOMCAT/bin/shutdown.sh
$TOMCAT/bin/start.sh
else
$TOMCAT/bin/start.sh
fi
上述代码存在一个有些不易察觉的问题,当tomcat正在运行时直接执行的话会报错。
虽然逻辑上正确,但是没考虑到 tomcat关闭和开启也是需要时间的,直接执行会报出端口冲突,或者8005端口没有开启
我的解决方法是
#!/bin/bash
TOMCAT=/usr/local/tomcat #tomcat base dir
check_state(){
STATE=`ps aux | grep -v grep | grep tomcat | wc -l` #check tomcat's state
return $STATE
}
check_state
if [ $? -eq 1 ];then
$TOMCAT/bin/shutdown.sh
sleep 5
while [ 1 -gt 0 ] #check tomcat's state every second ,if tomcat has already been shutdown then startup it!
check_state
if[ $? -eq 0 ];then
$TOMCAT/bin/start.sh
break
fi
sleep 1
else
$TOMCAT/bin/start.sh
fi