守护进程监控tomcat并自己主动重新启动

昨天的tomcat问题。一天挂了3,4回,受不了了决定写个监控tomcat进程并自己主动重新启动的脚本!

在网上查资料。主要分为两类:一类是定时重新启动tomcat,这当然不是我须要的。还有一类是监控并重新启动。只是也有好几个版本号。我综合比較后(主要是这篇http://hi.baidu.com/tedzhangzhe/item/4afd87aa1cf2d1f215329b8a),删除了些不须要的内容,并将代码改动例如以下:

###########################################
# author
# date 2014/05/19
# update 2014/05/19
# Automatic detection and restart tomcat
############################################ 

echo ========================================
date
cd /usr/local/share/tomcat7/bin/script
rm -f main.jsp
 wget -T 10 -t 3 -q http://10.0.210.100:8080/pmonitor/main.jsp
if [ ! -e main.jsp ]; then
        echo "restart tomcat."
        export JAVA_HOME=/usr/local/java/jdk1.6.0_37

        /usr/local/share/tomcat7/bin/shutdown.sh
        sleep 10
        kill -9 `ps aux|grep "/usr/local/share/tomcat7"|grep -v grep|awk ‘{prin        t $2}‘`
        sleep 5
        /usr/local/share/tomcat7/bin/startup.sh
else
        echo "checked."
fi

1、将代码拷贝到monitor.sh的文档中,并放入usr/local/share/tomcat7/bin中(路径是自己选的。若改动路径,将代码中相关内容替换为新路径即可了)。

2、sudo chmod a+x monitor.sh加权限。

3、sudo crontab -e,在文档末尾加入*/2 * * * * /usr/local/share/tomcat7/bin/monitor.sh。意思是全天范围内每2分钟执行一次这个脚本。

当中,我明明在.bashrc文件里设置过了JAVA_HOME环境变量,但是执行时还是报错。提示Neither the JAVA_HOME nor the JRE_HOME environment variable is defined。所以不得已在代码中增加了export
JAVA_HOME=/usr/local/java/jdk1.6.0_37又定义了一遍,有知道为什么的请不吝赐教哈。

測试环节:人工关闭tomcat后。2分钟后ps -ef |grep tomcat。又自己主动启动了,成功。

总结一下,这篇代码的方法不是直接监控tomcatport,而是通过wget传输文件来測试。我们都知道wget是能够走http协议的,正好能够经过tomcat来測试服务是否有效。非常巧妙的应用!

同理也可做其它服务的监控。

时间: 2024-08-25 21:18:23

守护进程监控tomcat并自己主动重新启动的相关文章

linux shell脚本守护进程监控svn服务

最近搭建的svn服务不知道什么原因服务总是被关闭(如果你不知道怎么搭建svn可以参考linux下搭建svn版本控制软件),因此用shell脚本实现一个守护进程.用于监控svn服务是否启动,如果服务不在则启动. 创建监控脚本svnmonit.sh #! /bin/sh #进程名字可修改 PRO_NAME=svnserve PORT=58652 REP_DIR=/www/svndata while true ; do #用ps获取$PRO_NAME进程数量 NUM=`ps aux | grep ${

阿里云自定义监控tomcat进程数

阿里云提供自定义监控SDK,这有助于我们定制化的根据自身业务来做监控,下面我就根据业务需求来介绍一个简单的自定义监控配置. 阿里提供了2个版本的自定义监控接口:自定义监控SDK(python版) :cms_post.py自定义监控SDK(bash版) :cms_post.sh下载地址:http://help.aliyun.com/knowledge_detail.htm?knowledgeId=5974901 本文使用shell版本做演示       这里说下我的简单需求,我们需要监控ECS服务

tomcat进程监控

由于线上服务不知道在什么时候会挂掉,所以写了一个监控tomcat进程的脚本.如果该进程不存在时,去启动该tomcat进程. #!/bin/bash source /etc/profile source ~/.bash_profile # source /etc/profile ~/.bash_profile 这两句一定要加上,特别是在监控一些java进程的时候. pid=`ps -ef | grep app1 | grep -v "grep" |sed -n 1p | awk '{pr

Tomcat 8在CentOS 7的守护进程设置

Tomcat 8在CentOS 7的守护进程设置 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 1.建立Jsvc Jsvc是专为Java应用程序开发的一个工具包,其目标是把Java应用程序的普通运行转换为以Unix守护进程的方式运行.这样的话,可以很方便地启动/停止应用程序.Tomcat安装包的bin子目录下就包含了Jsvc工具包的源码,整个建立过程很方便,如下. 本文的脚本以Tomcat 8.0.27,CentOS 7为例.假定我的JAVA 8安

python 守护进程,监控进程

守护进程代码: 1 import time, os 2 import subprocess 3 4 5 def run(): 6 while True: 7 taskList = os.popen('tasklist').read() 8 for path, exe in [os.path.split(line.strip()) for line in open('config') if line.strip()]: 9 if exe not in taskList: 10 subprocess

Windows下tomcat进程监控批处理程序

在Windows下tomcat进程监控批处理程序脚本如下: @echo off ::tomcat安装目录 set _tomcatDir=E:\myFiles\apache-tomcat-8.5.31 set _curlDir=E:\myFiles\apache-tomcat-8.5.31\curl set "httpcode=" ::访问tomcat cd /d %_curlDir% for /f "delims=" %%r in ('CURL.EXE -m 60

深入理解Linux操作系统守护进程的意义

Linux服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户.提供这些服务的程序是由运行在后台的守护进程(daemons)来执行的.守护进程是生存期长的一种进程.它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件.他们常常在系统引导装入时启动,在系统关闭时终止.linux系统有很多守护进程,大多数服务器都是用守护进程实现的.同时,守护进程完成许多系统任务,比如,作业规划进程crond.打印进程lqd等.有些书籍和资料也把

linux usb枚举过程分析之守护进程及其唤醒【转】

转自:http://blog.csdn.net/xuelin273/article/details/38646765 usb热插拔,即usb设备可以实现即插即用,像U盘一样,插到电脑里就可以用,不用时可以直接拔除,这个动作不会影响USB设备使用性能. 在linx 系统中,usb热插拔由两部分方面共同实现,即内核空间和用户空间,内核由一个守护进程实现,用户空间由udev 程序实现.在内核空间里,有一个专门用于监控usb hub的状态的守护进程,守护进程通过等待队列实现,等待队列平时处理休眠状态,当

使用monit规范的扩展业务的进程监控和管理

前言: 看到这个标题的人一定会很疑惑,进程监控和报警,不都是用zabbix,nagios么?  对于管理的话,自己写crontab脚本不就行了. 当然这肯定是可以的. 标题说了,规范和扩展!   所谓的进程监控就是 在进程不可用,或者是被kill掉,也有外因,比如进程吃内存大,需要重启进程,让他初始化程序的实例,简单说,就是进程pid是在,只是进程是假死的,不可用的. 对于这些进程管理和监控的需求,说下圈子里面解决这类问题的办法: 大家一定知道supervisord这个东西,现在很多人都喜欢用他