`
happmaoo
  • 浏览: 4347286 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

    tomcat自启动脚本

    tomcat自启动脚本

    Linux下shell脚本监控Tomcat的状态并实现自动启动的步骤

    最近公司需要在Linux下监控tomcat的服务,一旦tomcat服务存在异常或者宕机,重启tomcat保证服务的正常运行,由于Linux下有Shell脚本可以实现此效果,下面是Linux下shell脚本监控Tomcat的状态并实现自动启动的步骤。...

    Tomcat自动检查重启脚本

    自动监控tomcat脚本并且执行重启操作

    tomcat宕机重启脚本

    tomcat宕机重启脚本,比较简单的一种设置

    Linux 多tomcat服务 统一安装 统一部署 工具 shell编写 自动化部署与统一安装升级 - 类ansible工具

    Linux 多tomcat服务 统一安装 统一部署 工具 shell编写 1 引言 基于JAVA开发项目,随着服务的越来越多,配置文件更是眼花缭乱,每次不知道因为配置问题浪费多少时间,更不知道因为配置问题出过多少问题。多台...

    Jpom项目监控软件-其他

    【Server】添加服务自启动脚本创建方案,下面贴一下 Server 端自启动方式: 解决BUG、优化功能 【Server】全局网络请求新增 loading 状态控制 【Server】获取构建日志关闭 loading 状态 【Agent】控制台日志支持定时...

    Redis云管理平台CacheCloud.zip

    作为linux服务启动:sudo ln -s /opt/cachecloud-web/cachecloud-web-1.0-SNAPSHOT.war /etc/init.d/cachecloud-web  /etc/init.d/cachecloud-web start(9999是tomcat的端口号,具体要参考第三节中的online....

    单点登录源码

    服务网关,对外暴露统一规范的接口和包装响应结果,包括各个子系统的交互接口、对外开放接口、开发加密接口、接口文档等服务,可在该模块支持验签、鉴权、路由、限流、监控、容错、日志等功能。示例图: ![API网关]...

    JAVA上百实例源码以及开源项目源代码

    两个目标文件,自绘button。 Java圆形电子时钟源代码 1个目标文件 内容索引:JAVA源码,系统相关,电子钟  用JAVA编写的指针式圆形电子钟,效果图如下所示,其实代码很简单,希望对你有帮助。 Message-Driven Bean ...

    JAVA上百实例源码以及开源项目

    两个目标文件,自绘button。 Java圆形电子时钟源代码 1个目标文件 内容索引:JAVA源码,系统相关,电子钟  用JAVA编写的指针式圆形电子钟,效果图如下所示,其实代码很简单,希望对你有帮助。 Message-Driven Bean ...

    java 面试题 总结

    但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...

    测试培训教材

    JBOSS_HOME\server\default\deploy\jbossweb-tomcat55.sar\server.xml 6、修改IP地址后不能登录QC 解决办法: 在C:\Program Files\Mercury\Quality Center\jboss\server\default\deploy目录下找到10sabin.war ...

    超级有影响力霸气的Java面试题大全文档

    但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...

Global site tag (gtag.js) - Google Analytics