linux下tomcat监控自启动脚本

 环境:redhat9.0

1、脚本如下:/root/cs.sh

#!/bin/bash
JAVA_HOME=/root/jdk1.5.0_01
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
PATH=:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export JAVA_HOME CLASSPATH PATH

BEGINTIME=$(date +%M)
while true
do
if [[ -e testpage.log ]]
then
        cp -f /dev/null /root/testpage.log
fi

sleep 10

ENDTIME=$(date +%M)
if ((expr $ENDTIME - $BEGINTIME) > 1 )
then
        break
fi

/usr/local/bin/lynx -dump -connect_timeout=15000 -error_file=/root/testpage.log

/http://localhost:8080/index.jsp >/dev/null
cat /root/testpage.log | grep "STATUS=HTTP/1.1 200 OK" >/dev/null

if (( $? != 0 ))
then
        TOMCAT=$(ps -ef --cols 200 |grep java.*tomcat |awk '{if($3==1)print $3}')
        if [ "$TOMCAT" != 1 ]
        then
                echo -e "$(date +%Y-%m-%d-%H:%M:%S):STARTUP TOMCAT NOW!" >>

/root/tomcatlog.log
                /root/tomcat-5.5.7/bin/startup.sh
                continue
        else
                echo -e "$(date +%Y-%m-%d-%H:%M:%S):RESTART,SHUTDOWN TOMCAT NOW!" >>

/root/tomcatlog.log
                /root/tomcat-5.5.7/bin/shutdown.sh
                continue
        fi
else
        echo -e "$(date +%Y-%m-%d-%H:%M:%S):TOMCAT IS RUNNING!" >> /root/tomcatlog.log
        break
fi
done

2、添加到crontab中

[root@localhost root]# crontab -e

输入:

SHELL=/bin/bash
PATH=/root/jdk1.5.0_01/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
HOME=/root
*/1 * * * * sh /root/cs.sh
表示一分钟执行下脚本

3、安装lynx

下载:lynx2.8.5.tar.gz 解压到root下

[root@localhost root]# tar -xzvf lynx2.8.5.tar.gz

[root@localhost root]# cd lynx2-8-5/ 进入lynx2-8-5目录
[root@localhost lynx2-8-5]#./configure 编译
[root@localhost lynx2-8-5]# make install 开始安装

默认安装到:/usr/local/bin/lynx

lynx参数:
           -dump :显示网页内容到标准输出并推出
           -connect_timeout :设置超时时间,单位(毫秒)
           -error_file :将网页的返回状态信息写进文件

思路:先访问页面,如果的到200 OK状态直接跳出来,如果是500,404 等错误,在判断进程中是否有tomcat进程,如果有先停掉,然后在启tomat。

其中遇到了几个问题:

1、bash脚本在sh下运行异常,其中有

a、root下没有这个命令:

SHELL=/bin/bash
PATH=/root/jdk1.5.0_01/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
HOME=/root

*/1 * * * * root /root/cs.sh改成*/1 * * * * sh /root/cs.sh

b、找不到java_home:以下加入到脚本

JAVA_HOME=/root/jdk1.5.0_01
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
PATH=:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export JAVA_HOME CLASSPATH PATH

以下是在另外一个linux版本下的
#!/bin/bash
BEGINTIME=$(date +%s)
while true
do
if [ -e testpage.log ]
then
        cp -f /dev/null /root/testpage.log
fi
sleep 10
ENDTIME=$(date +%s)
OVERTIME=$(($ENDTIME-$BEGINTIME))
if (( $OVERTIME > 45 ))
then
        echo -e "overtime exit:$OVERTIME second! " >> /root/tomcatlog.log
        break
fi
/usr/local/bin/lynx -dump -connect_timeout=15000 -error_file=/root/testpage.log /http://192.168.100.126:8080/cdnweb/test.do >/dev/null
cat /root/testpage.log | grep "STATUS=HTTP/1.1 200 OK" >/dev/null
if [ "$?" != 0 ]
        then
                echo -e "$?:status=http/1.1 500 error! " >> /root/tomcatlog.log
                TOMCAT=$(ps -ef --cols 200 |grep java.*tomcat |awk '{if($3==1)print $3}')
                if [ "$TOMCAT" != 1 ]
                        then
                                echo -e "$(date +%Y-%m-%d-%H:%M:%S):STARTUP TOMCAT NOW! " >> /root/tomcatlog.log
                                /root/apache-tomcat-5.5.20/bin/startup.sh
                                continue
                        else
                                echo -e "$(date +%Y-%m-%d-%H:%M:%S):SHUTDOWN TOMCAT NOW! " >> /root/tomcatlog.log
                                /root/apache-tomcat-5.5.20/bin/shutdown.sh
                                continue
                fi
        else
                echo -e "$?:status=http/1.1 200 ok! " >> /root/tomcatlog.log
                echo -e "$(date +%Y-%m-%d-%H:%M:%S):TOMCAT IS RUNNING NOW! " >> /root/tomcatlog.log
                break
fi
done

根据实际情况tomcat无法停掉在此做出修改(避免启动多个tomcat导致的一直启动问题)
#!/bin/bash
BEGINTIME=$(date +%s)
while true
do
if [ -e testpage.log ]
then
        cp -f /dev/null /root/testpage.log
fi
sleep 40
ENDTIME=$(date +%s)
OVERTIME=$(($ENDTIME-$BEGINTIME))
if (( $OVERTIME > 180 ))
then
        echo -e "overtime exit:$OVERTIME second! " >> /root/tomcatlog.log
        break
fi
/usr/local/bin/lynx -dump -connect_timeout=50000 -error_file=/root/testpage.log /http://localhost/test.do >/dev/null
cat /root/testpage.log | grep "STATUS=HTTP/1.1 200 OK" >/dev/null
if [ "$?" != 0 ]
        then
                TOMCAT=$(ps -ef |grep -v grep |grep -c java.*tomcat)
                if [ "$TOMCAT" = 0 ]
                        then
                                echo -e "status=http/1.1 404 error! " >> /root/tomcatlog.log
                                echo -e "$(date +%Y-%m-%d-%H:%M:%S):STARTUP TOMCAT NOW! " >> /root/tomcatlog.log
                                /root/apache-tomcat-5.5.17/bin/startup.sh
                                continue
                        else
                                echo -e "status=http/1.1 500 error! " >> /root/tomcatlog.log
                                PID=$(ps -ef |grep java.*tomcat |grep -v grep |cut -c9-15)
                                echo -e "$(date +%Y-%m-%d-%H:%M:%S):SHUTDOWN TOMCAT NOW! " >> /root/tomcatlog.log
                                kill -9 $PID
                                continue
                fi
        else
                #echo -e "$?:status=http/1.1 200 ok! " >> /root/tomcatlog.log
                echo -e "$(date +%Y-%m-%d-%H:%M:%S):TOMCAT IS RUNNING NOW! " >> /root/tomcatlog.log
                break
fi
done

在实际测试过程中出现多个CS1.SH运行到sleep的时候一起无法响应,突然很多个CS1.SH同时被唤醒而导致出错做出如下调整,在sleep前加如下代码(目的保证一次一个CS1.SH脚本运行)

NUM=$(ps -ef |grep -v grep |grep -c cs1.sh)
if [ "$NUM" != 0 ]
then
   echo -e "$(date +%Y-%m-%d-%H:%M:%S):There is a cs1.sh running! " >> /root/tomcatlog.log
   break
fi

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值