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


浙公网安备 33010602011771号