基於centos的java編寫根據程序名稱關閉程序方法
阿新 • • 發佈:2018-12-29
基於centos的java編寫根據程序名稱關閉程序方法
package com.cwgis.closeprocess; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.lang.management.ManagementFactory; public class Main { public static void main(String[] args) throws Exception { String name = ManagementFactory.getRuntimeMXBean().getName(); // get current_pid String current_pid = name.split("@")[0]; System.out.println(name+ " 當前程序PID="+current_pid); //args=new String[1]; //args[0]="dd"; // write your code here //System.out.println("helloworld"); if(args==null) throw new IOException("args引數不能為空"); if(args.length<0)throw new IOException("args引數至少為一個引數"); String pName=args[0]; System.out.println("當前正在查詢的程序名稱為:"+pName); boolean havePID = closeProcessBypName(pName,current_pid); if(havePID==false) { System.out.println(" PID未找到程序編號"); } } public static boolean closeProcessBypName(String pName,String current_pid){ boolean rbc=false; BufferedReader reader =null; try{ String PID=""; String t_pName=""; //顯示所有程序 Process process = Runtime.getRuntime().exec("jps"); reader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line = null; while((line = reader.readLine())!=null){ String[] strs = line.split(" "); if(strs.length>=2) { PID = strs[0]; t_pName=strs[1]; } if(PID.equalsIgnoreCase(current_pid)==false && t_pName.equalsIgnoreCase(pName)){ rbc=true; System.out.println("相關資訊 -----> "+line+" 找到PID="+PID+" "); // closeLinuxProcess(PID); //kill -9 PID } } }catch(Exception e){ e.printStackTrace(); }finally{ if(reader!=null){ try { reader.close(); } catch (IOException e) { } } } return rbc; } /** * 關閉Linux程序 * @param Pid 程序的PID */ public static void closeLinuxProcess(String Pid){ Process process = null; BufferedReader reader =null; try{ //殺掉程序 process = Runtime.getRuntime().exec("kill -9 "+Pid); reader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line = null; while((line = reader.readLine())!=null){ System.out.println("殺掉程序PID="+line); } }catch(Exception e){ e.printStackTrace(); }finally{ if(process!=null){ process.destroy(); } if(reader!=null){ try { reader.close(); } catch (IOException e) { } } } } }
應用例子:
[[email protected] ~]# java -cp /usr/cwgis/tools/closeprocess.jar com.cwgis.closeprocess.Main Main [email protected] 當前程序PID=6429 當前正在查詢的程序名稱為:Main 相關資訊 -----> 32417 Main 找到PID=32417 相關資訊 -----> 31778 Main 找到PID=31778 相關資訊 -----> 32326 Main 找到PID=32326 相關資訊 -----> 32204 Main 找到PID=32204 runCmd.sh "java -cp /usr/cwgis/tools/closeprocess.jar com.cwgis.closeprocess.Main HRegionServer" all runCmd.sh "java -cp /usr/cwgis/tools/closeprocess.jar com.cwgis.closeprocess.Main HMaster" all
[[email protected] ~]# runCmd.sh "java -cp /usr/cwgis/tools/closeprocess.jar com.cwgis.closeprocess.Main HRegionServer" all
*******************node111***************************
[email protected] 當前程序PID=7317
當前正在查詢的程序名稱為:HRegionServer
PID未找到程序編號
*******************node112***************************
[email protected] 當前程序PID=32583
當前正在查詢的程序名稱為:HRegionServer
PID未找到程序編號
*******************node113***************************
[email protected] 當前程序PID=3806
當前正在查詢的程序名稱為:HRegionServer
PID未找到程序編號
*******************node114***************************
[email protected] 當前程序PID=1710
當前正在查詢的程序名稱為:HRegionServer
PID未找到程序編號
*******************node115***************************
[email protected] 當前程序PID=20986
當前正在查詢的程序名稱為:HRegionServer
PID未找到程序編號
*******************node116***************************
[email protected] 當前程序PID=17629
當前正在查詢的程序名稱為:HRegionServer
PID未找到程序編號
*******************node117***************************
[email protected] 當前程序PID=24213
當前正在查詢的程序名稱為:HRegionServer
PID未找到程序編號
*******************node118***************************
[email protected] 當前程序PID=23505
當前正在查詢的程序名稱為:HRegionServer
PID未找到程序編號
*******************node119***************************
[email protected] 當前程序PID=29860
當前正在查詢的程序名稱為:HRegionServer
PID未找到程序編號
*******************node120***************************
[email protected] 當前程序PID=27533
當前正在查詢的程序名稱為:HRegionServer
PID未找到程序編號
*******************node121***************************
[email protected] 當前程序PID=18447
當前正在查詢的程序名稱為:HRegionServer
PID未找到程序編號
*******************node122***************************
[email protected] 當前程序PID=5914
當前正在查詢的程序名稱為:HRegionServer
PID未找到程序編號
*******************node123***************************
[email protected] 當前程序PID=29428
當前正在查詢的程序名稱為:HRegionServer
PID未找到程序編號