`
tokyo2006
  • 浏览: 32473 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
最近访客 更多访客>>
社区版块
存档分类
最新评论

如何监控tomcat进程并杀死它

阅读更多
        我不知道为什么在linux上有时候./shutdown.sh不能关闭掉tomcat,我估计是因为有其它的进程在使用它,于是每次都只能手动的kill -9去杀掉他,后来我嫌麻烦于是自己写了个监控PID的脚本,然后用JAVA程序去访问我的页面,如果异常或者超时,我就调用这个监控去杀掉tomcat,并重新启动它
        首先我要准备一个脚本叫做killtomcat.sh,哈哈,监控的原理很简单通过ps -ef|grep 来实现
 1#!/bin/bash
 2export JAVA_HOME=/local/akazam/servers/java
 3export CATALINA_HOME=/local/akazam/servers/tomcat
 4export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/td.jar:$JAVA_HOME/jre/lib/rt.jar:$CATALINA_HOME/lib/servlet-api:$CATALINA_HOME/lib/catalina-ant.jar:$CATALINA_HOME/lib/catalina.jar:$CATALINA_HOME/lib/annotations-api.jar:$CATALINA_HOME/lib/tomcat-coyote.jar:$CATALINA_HOME/lib/tomcat-dbcp.jar:$CATALINA_HOME/lib/jsp-api.jar:$CATALINA_HOME/lib/commons-pool.jar:$CATALINA_HOME/lib/common-dbcp.jar:$CATALINA_HOME/lib/catalina-tribes:$CATALINA_HOME/lib/catalina-ha.jar:.
 5export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$CATALINA_HOME/bin:$PATH
 6TOMCAT_PATH=/local/akazam/servers/tomcat/bin
 7if [ $# -eq 0 ]
 8    then
 9        echo "ERROR:Usage: process argument" 1>&2
10        echo "eg:If you want to restart tomcat you can enter ./restart.sh tomcat!" 1>&2
11        exit 1
12fi
13path=$1
14set $(ps -ef|grep $path)
15pid=$2
16flaggrep=$8
17echo "tomcat pid : $pid,flag : $flaggrep"
18
19if [ "$flaggrep" = "grep" -"$flaggrep" = "/bin/bash" ]
20then
21 echo "no thread start"
22else
23#kill tomcat
24kill -9 $pid
25sleep 3
26echo "killed thread"
27fi
28#start tomcat
29cd $TOMCAT_PATH
30./startup.sh
31echo "tomcat restart!" 
        接下来就要写个JAVA类来监控了
  1package com.akazam.monitor;
  2
  3import java.io.BufferedReader;
  4import java.io.File;
  5import java.io.IOException;
  6import java.io.InputStreamReader;
  7import java.net.HttpURLConnection;
  8import java.net.URL;
  9import java.util.Date;
 10
 11public class MonitorTomcat {
 12    public long getLoadMS(String url){
 13        long time1=System.currentTimeMillis();
 14        
 15        int i=0;
 16         // 带参数目录名方式运行 dir 命令
 17        Runtime runtime = Runtime.getRuntime();
 18        String classDir = this.getClass().getResource("/").getPath();
 19        String command= classDir+"killtomcat.sh tomcat/";
 20        try 
 21            URL target = new URL(url); 
 22            HttpURLConnection conn = (HttpURLConnection) target.openConnection();  
 23            conn.setRequestMethod("GET");  
 24            conn.connect(); 
 25            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));  
 26            while (in.readLine() != null){
 27                i++;
 28            }
  
 29        }
catch(Exception e){  
 30            //重启tomcat
 31            try {
 32                Process process = runtime.exec(new String[] {"/bin/bash","killtomcat.sh","tomcat/"},null,new File(classDir));
 33                System.out.println(e.getMessage()+"\r\nRun command is:"+command);
 34                if(process!=null)
 35                {
 36                    BufferedReader in = new BufferedReader(new InputStreamReader(
 37                              process.getInputStream()));
 38                    String line;
 39                    while ((line = in.readLine()) != null{
 40                        System.out.println(line+"\r\n");
 41                    }

 42                     try {
 43
 44                                   if (process.waitFor() != 0{
 45
 46                                       System.err.println("exit value = " + process.exitValue());
 47
 48                                   }
 
 49
 50                                 }

 51
 52                                 catch (InterruptedException ec) {  
 53
 54                                    System.err.println(ec);
 55
 56                                }

 57
 58
 59                            
 60                }

 61                else return -1;
 62            }
 catch (IOException e1) {
 63                // TODO Auto-generated catch block
 64                //e1.printStackTrace();
 65                System.out.println(e1.getMessage()+"\r\n");
 66            }

 67            
 68        }
  
 69        long time2 = new Date().getTime();  
 70        long result = time2-time1;
 71        if(result>60000)
 72        {
 73            //重启tomcat
 74            try {
 75                
 76                Process process = runtime.exec(new String[] {"/bin/bash","killtomcat.sh","tomcat/"},null,new File(classDir));
 77                if(process!=null)
 78                {
 79                    BufferedReader in = new BufferedReader(new InputStreamReader(
 80                              process.getInputStream()));
 81                            String line;
 82                            try {
 83                                while ((line = in.readLine()) != null{
 84                                 System.out.println(line+"\r\n");
 85                                }

 86                                 try {
 87
 88                                       if (process.waitFor() != 0{
 89
 90                                           System.err.println("exit value = " + process.exitValue());
 91
 92                                       }
 
 93
 94                                     }

 95
 96                                     catch (InterruptedException ec) {  
 97
 98                                        System.err.println(ec);
 99                                        System.out.println(ec.getMessage()+"\r\n");
100                          
分享到:
评论

相关推荐

    Linux下Tomcat的启动、关闭、杀死进程

    本文将详细介绍如何在Linux系统中启动、关闭以及强制终止(杀死)Tomcat进程。 #### 一、启动Tomcat 启动Tomcat通常需要通过Tomcat安装目录下的`bin`目录执行相应的脚本命令。具体的步骤如下: 1. **进入Tomcat...

    Linux脚本监控tomcat假死与异常

    Linux定时脚本监控tomcat是否假死或出现运行异常,若出现异常则自动重启。

    杀进程重启tomcat

    ### 如何启动、重启及杀死Tomcat进程 在IT运维工作中,经常需要对服务器上的应用进行启动、重启或停止操作,以确保应用的稳定运行。本文档将详细介绍如何通过命令行来启动、重启以及杀死Tomcat进程的方法。这对于...

    tomcat进程不能完全关闭的处理办法.txt

    tomcat shutdown后,进程还存在linux系统中的解决办法

    linux 杀死僵死进程并重启

    linux 下的 bash shell脚本,用于杀死僵死的进程,并重新启动.

    Tomcat定时启动与监控

    脚本首先检查Tomcat是否正在运行,如果运行则停止Tomcat,等待一段时间后再确认是否已经完全关闭,若未关闭则强制杀死进程,然后启动Tomcat。接着,使用`crontab -e`命令编辑定时任务,如`00 05 * * * /home/lxh/...

    Linux服务器上的Tomcat进程频繁被杀

    Linux服务器上的Tomcat进程频繁被杀一.查看系统日志二.确定问题三.附带情况四.总结 一.查看系统日志 目前服务器上的Tomcat服务经常出现宕机的情况,想通过查看系统日志/var/log/messages来确定问题,但是系统日志没有...

    Tomcat 发布程序使用cmd查看端口占用、相应进程、杀死进程等的命令

    在使用Tomcat作为Java ...以上介绍的就是在使用Tomcat发布程序时,通过cmd来查看端口占用、确定相应进程以及杀死进程的相关知识点。在实际操作中,熟练掌握这些命令对于解决问题和维护服务器的稳定运行是非常有帮助的。

    Window通过cmd查看端口占用、相应进程、杀死进程等的命令.docx

    ### Windows通过CMD查看端口占用、相应进程及杀死进程的命令 #### 一、查看所有进程占用的端口 在Windows系统中,我们可以通过CMD(命令提示符)来执行一些命令来实现对网络连接状态的查看,特别是查看当前系统中...

    Linux下Tomcat重新启动

    kill 命令可以直接杀死 Tomcat 的进程,例如 kill -9 7010。注意,使用 kill 命令需要小心,因为它可能会导致 Tomcat 的进程突然终止。 在关闭 Tomcat 之后,我们可以使用 ps 命令来检查 Tomcat 是否已经关闭。如果...

    jenkins 部署启动项目后 杀死子进程

    前言 最近在鼓捣 jenkins 的时候,遇到了很多问题,这个...正如题目写的,就是 jenkins 在构建结束之后,会杀死它创建的子进程,所以你写的后台执行的脚本也会被kill掉。 方案一: # 在执行的脚本前边加入:不要杀

    杀除自己之外的别的java进程

    使用java调用命令行的方式查杀进程,可以杀死除自己之外的java进程

    linux 启动 Tomcat 命令

    - 若正常关闭失败,可尝试使用`kill`命令强制杀死Java进程: ```bash killall -9 java ``` - 日志中显示第一次尝试杀掉进程并未成功,第二次再次尝试: ```bash java: no process killed ``` - 表明此时已...

    linux下的TOMCAT操作

    kill <PID> # 强制杀死进程 ``` 或者使用`killall`命令关闭所有Java进程: ```bash killall java ``` 需要注意的是,强制停止可能会导致数据丢失或不完整。 #### 六、查看Tomcat日志 查看Tomcat的日志对于排查...

    windows守护进程,开机自动重启,进程监测

    因为控制台程序出现过因为连接第三方服务超时直接挂掉(此时负载少了一个节点)以及服务器出现意外重启问题(该服务器所有节点宕机),所以需要一个进程守护程序。 也找过 现场的脚本、python的程序、pm2守护方式,...

    Linux下关闭tomcat

    本文将详细介绍如何在Linux系统中安全、有效地关闭Tomcat服务,包括通过标准脚本关闭、直接杀死进程等方法。 #### 一、使用Shutdown脚本关闭Tomcat 1. **访问Tomcat安装目录**: - 首先需要定位到Tomcat的安装...

    tomcat在linux上的部署命令

    使用此命令可以查找系统中所有与 Tomcat 相关的进程,并列出相关信息,便于管理和监控。 **2. 检查日志文件** - **命令格式:** `tail -f /path/to/tomcatX/logs/catalina.out` - **示例:** ```bash tail -...

Global site tag (gtag.js) - Google Analytics