定时重启tomcat脚本:
经过测试,脚本有可能将自身的进程搜索出来结果kill掉了,可以将关键词更具体化”tomcat/conf”,这样就可以避免查找到自身的脚本进程了
循环关闭和启动:
#!/bin/bash
echo "#########starting##########" >> /root/restartlogs/restart_tomcat_`date +\%Y\%m\%d`.log
echo `date` >> /root/restartlogs/restart_tomcat_`date +\%Y\%m\%d`.log
#before stop tomcat Monitor memory, CPU and other data
top -n 1 -b >> /root/restartlogs/restart_tomcat_`date +\%Y\%m\%d`.log
#stop tomcat
sh /home/tomcat/bin/shutdown.sh
count=0
while ps -ef|grep "tomcat/conf"|grep -v grep|grep -v -q PPID; do
echo "waiting $count seconds tomcat stop" >> /root/restartlogs/restart_tomcat_`date +\%Y\%m\%d`.log
sleep 1
((count++))
if (( $count > 10 )); then
echo "break 10s reached. stop tomcat failed,so kill the tomcat pid" >> /root/restartlogs/restart_tomcat_`date +\%Y\%m\%d`.log
#kill
PROCESS=`ps -ef|grep "tomcat"|grep -v grep|grep -v PPID|awk '{ print $2}'`
for i in $PROCESS
do
echo "Kill the $1 process [ $i ]" >>/root/restartlogs/restart_tomcat_`date +\%Y\%m\%d`.log
kill -9 $i
done
fi
done
echo 'tomcat stop status has been confirmed. start tomcat' >> /root/restartlogs/restart_tomcat_`date +\%Y\%m\%d`.log
#before start tomcat Monitor memory, CPU and other data
top -n 1 -b >> /root/restartlogs/restart_tomcat_`date +\%Y\%m\%d`.log
echo 'start_tomcat' >> /root/restartlogs/restart_tomcat_`date +\%Y\%m\%d`.log
#start tomcat
sh /home/tomcat/bin/startup.sh
count=0
while ! netstat -anp | grep -q "0.0.0.0:8080" ;
do
echo "waiting $count seconds of tomcat starting" >> /root/restartlogs/restart_tomcat_`date +\%Y\%m\%d`.log
sleep 1
((count++))
if (( $count > 10 )); then
echo "break 10s reached.server start again" >> /root/restartlogs/restart_tomcat_`date +\%Y\%m\%d`.log
sh /home/tomcat/bin/startup.sh
sleep 10
fi
done
if netstat -anp | grep -q "0.0.0.0:8080" ;
then
echo "server is running" >> /root/restartlogs/restart_tomcat_`date +\%Y\%m\%d`.log
else
echo "server failed to start" >> /root/restartlogs/restart_tomcat_`date +\%Y\%m\%d`.log
fi
echo `date` >> /root/restartlogs/restart_tomcat_`date +\%Y\%m\%d`.log
脚本1:
#!/bin/bash
echo "#########starting##########" >> /root/restart_tomcat.log
echo `date` >> /root/restart_tomcat.log
#关闭tomcat前 监控CPU、内存使用率:
top -n 1 -b | grep -E '^[[:alpha:]]' >> /root/restart_tomcat.log
#stop tomcat
sh /home/tomcat/bin/shutdown.sh
#kill
PROCESS=`ps -ef|grep "tomcat"|grep -v grep|grep -v PPID|awk '{ print $2}'`
for i in $PROCESS
do
echo "Kill the $1 process [ $i ]"
kill -9 $i
done
echo 'stop tomcat' >> /root/restart_tomcat.log
#启动tomcat前 监控CPU、内存使用率:
top -n 1 -b | grep -E '^[[:alpha:]]' >> /root/restart_tomcat.log
#sh /home/tomcat/bin/startup.sh
cd /home/tomcat/bin
echo 'start_tomcat' >> /root/restart_tomcat.log
./startup.sh
echo `date` >> /root/restart_tomcat.log
echo "server start success" >> /root/restart_tomcat.log
脚本2:
#!/bin/bash
if netstat -anp | grep -q "0.0.0.0:8080" ; then
echo "server is running...stop"
# service tomcat7 stop
else
echo "server is not running..."
fi
netstat -anp | egrep "8080|8009|8005"
ps -ef | grep 'tomcat' | grep -v grep | awk '{print $2}'
ps -ef | grep 'tomcat' | grep -v grep | awk '{print $2}' | xargs kill -kill
ps -ef | grep 'tomcat' | grep -v grep | awk '{print $2}'
service tomcat7 start
count=0
while ! netstat -anp | grep -q "0.0.0.0:8080" ; do
echo "waiting $count seconds of tomcat starting"
sleep 1
((count++))
if (( $count > 60 )); then
echo "break 1 minutes reached"
break;
fi
done
if netstat -anp | grep -q "0.0.0.0:8080" ; then
echo "server is running"
else
echo "server failed to start"
fi
脚本3:
#!/bin/bash
echo "#########starting##########" >> /root/restart_tomcat.log
echo `date` >> /root/restart_tomcat.log
#stop tomcat
sh /home/tomcat/bin/shutdown.sh
#kill
#kill -s 9 `ps -ef | grep tomcat7.8100 | grep -v grep | awk '{print?$2}'`
for pid in `ps -ef | grep 'tomcat' | grep -v grep | awk '{print $2}'` ;
do
kill -9 "${pid} "
done
echo "tomcat stop status has been confirmed. start tomcat" >> /root/restart_tomcat.log
#sh /home/tomcat/bin/startup.sh
cd /home/tomcat/bin
echo "cd /home/tomcat/bin" >> /root/restart_tomcat.log
./startup.sh
echo `date` >> /root/restart_tomcat.log
echo "server start success" >> /root/restart_tomcat.log
脚本4:
#!/bin/bash
echo "#########starting##########" >> /root/restart_tomcat.log
echo `date` >> /root/restart_tomcat.log
if netstat -anp | grep -q "0.0.0.0:8080" ; then
echo "server is running...stop" >> /root/restart_tomcat.log
service tomcat7 stop
else
echo "server is not running..." >> /root/restart_tomcat.log
fi
count=0
while netstat -anp | grep -q "0.0.0.0:8080" ; do
echo "waiting $count seconds tomcat stop" >> /root/restart_tomcat.log
sleep 1
((count++))
if (( $count > 600 )); then
echo "break 10 minutes reached. stop tomcat failed". >> /root/restart_tomcat.log
fi
done
echo "tomcat stop status has been confirmed. start tomcat" >> /root/restart_tomcat.log
service tomcat7 start
count=0
while ! netstat -anp | grep -q "0.0.0.0:8080" ; do
echo "waiting $count seconds of tomcat starting" >> /root/restart_tomcat.log
sleep 1
((count++))
if (( $count > 60 )); then
echo "break 1 minutes reached" >> /root/restart_tomcat.log
break;
fi
done
if netstat -anp | grep -q "0.0.0.0:8080" ; then
echo "server is running" >> /root/restart_tomcat.log
else
echo "server failed to start" >> /root/restart_tomcat.log
fi
echo `date` >> /root/restart_tomcat.log
问题:
当添加Ehcache缓存时,tomcat虽然端口关闭了,但进程并未关闭!
优化之处:
关闭tomcat端口后需要监测进程是否被kill掉