<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    如何監控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                                    }

    101
    102                            }
     catch (IOException e) {
    103                                // TODO Auto-generated catch block
    104                                e.printStackTrace();
    105                            }

    106                }

    107                else return -1;
    108            }
     catch (IOException e) {
    109                // TODO Auto-generated catch block
    110                  System.out.println(e.getMessage()+"\r\n");
    111            }

    112        
    113        }

    114    
    115        
    116        return result;
    117    }

    118    public static void main(Stringstrings)
    119    {
    120        if(strings.length>0)
    121        {
    122            String url = strings[0];
    123            long ts = new MonitorTomcat().getLoadMS(url);
    124            if(ts==-1) System.out.println("Comman exec Error!");
    125            else System.out.println("Load Page cost :"+ts);
    126        }

    127    }

    128}

    129




    posted on 2011-03-17 09:41 Cloud kensin 閱讀(1698) 評論(0)  編輯  收藏 所屬分類: Java 、Linux

    <2011年3月>
    272812345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    導航

    統計

    常用鏈接

    留言簿(4)

    隨筆分類

    相冊

    相冊

    搜索

    最新評論

    主站蜘蛛池模板: 免费观看国产小粉嫩喷水| 久久亚洲2019中文字幕| 日本亚洲中午字幕乱码 | 日本一区免费电影| 久久国产乱子伦精品免费午夜| 久久久久亚洲AV无码永不| 国产青草视频免费观看97 | 国产情侣激情在线视频免费看| MM1313亚洲国产精品| 亚洲AV无码码潮喷在线观看| 成年女人午夜毛片免费看 | 国产公开免费人成视频| 国内少妇偷人精品视频免费| 亚洲人成色777777老人头| 亚洲VA中文字幕无码一二三区| 好男人看视频免费2019中文 | a级片免费观看视频| 亚洲kkk4444在线观看| 久久青青草原亚洲AV无码麻豆| 国产无遮挡吃胸膜奶免费看 | 日韩在线看片免费人成视频播放| 成人爽a毛片免费| jizzjizz亚洲日本少妇| 亚洲精品视频在线免费| 国产国拍精品亚洲AV片| 日韩精品视频免费网址| 免费人成在线观看69式小视频| 黄色视屏在线免费播放| 精品一区二区三区无码免费直播| 亚洲精品在线网站| 亚洲精品制服丝袜四区| 全部免费毛片免费播放| 亚洲免费综合色在线视频| 久久精品私人影院免费看| 一级午夜a毛片免费视频| 亚洲日韩AV一区二区三区中文| 亚洲视频在线观看网站| 久久精品国产亚洲| 国产亚洲色视频在线| 亚洲精品国产成人影院| 国产伦一区二区三区免费|