1. 程式人生 > 實用技巧 >java呼叫系統命令(執行殺程序命令)

java呼叫系統命令(執行殺程序命令)

private static final Logger logger = LoggerFactory.getLogger(CmdUtil.class);

/**
* 殺死程序
* taskkill 引數列表:
* /S system 指定要連線到的遠端系統。
* /U [domain\]user 指定應該在哪個使用者上下文執行這個命令。
* /P [password] 為提供的使用者上下文指定密碼。如果忽略,提示輸入。
* /F 指定要強行終止的程序。
* /FI filter 指定篩選進或篩選出查詢的的任務。
* /PID process id 指定要終止的程序的PID。
* /IM image name 指定要終止的程序的映像名稱。萬用字元 '*'可用來指定所有映像名。
* /T Tree kill: 終止指定的程序和任何由此啟動的子程序。
* @param processName 程序名稱
* @throws Exception
*/
public static void killProc(String processName) throws Exception {
System.out.println("關閉應用程式:" + processName);
executeCmd("taskkill /F /T /IM " + processName);
}

/**
* 執行CMD命令
* cmd /c dir 是執行完dir命令後關閉命令視窗。
* cmd /k dir 是執行完dir命令後不關閉命令視窗。
* cmd /c start dir 會開啟一個新視窗後執行dir指令,原視窗會關閉。
* cmd /k start dir 會開啟一個新視窗後執行dir指令,原視窗不會關閉。
* @param command cmd命令
* @return 命令執行輸出語句
* @throws IOException
* @throws InterruptedException
*/
private static String executeCmd(String command) throws IOException, InterruptedException {
Process process = Runtime.getRuntime().exec(command);
process.waitFor();//等待子程序完成再往下執行。
//建立bufferedReader
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream(),"GBK"));
String line = null;
StringBuilder build = new StringBuilder();
while ((line = bufferedReader.readLine()) != null) {
line = new String(line.getBytes("UTF-8"));
build.append(line);
}
bufferedReader.close();
int i = process.exitValue(); //接收執行完畢的返回值
if (i != 0) {
logger.error("log info :","cmd執行失敗");
throw new RuntimeException("cmd執行失敗");
}
process.destroy(); //銷燬子程序
process = null;
return build.toString();
}

/**
* linux查詢對應程序名並kill
* @throws Exception
*/
public static void killProcess(String processName) throws Exception{
//1.首先通過
Process pid=Runtime.getRuntime().exec("pidof "+ processName);
//找出linux當前執行的所有程序。
//2.再把pid寫入流中:
BufferedReader br = new BufferedReader(new InputStreamReader(
pid.getInputStream()), 1024);
//3.讀取流中的指定資訊:
String line = br.readLine();
logger.info("程序分流資訊是:"+ line);
if (StringUtils.isNotEmpty(line)){
Process pi=Runtime.getRuntime().exec("kill -9 "+line);
}
logger.info("已執行殺程序");
}