Linux重启tomcat脚本

14 篇文章 0 订阅

定时重启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掉

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值