java实现Windows系统进程查询及kill进程和重启进程(适用查看邮件等)
1 /** 2 * @desc 启动进程 3 * @author zp 4 * @date 2018-3-29 5 */ 6 public static void startProc(String processName) { 7 log.info("启动应用程序:" + processName); 8 if (StringUtils.isNotBlank(processName)) { 9 try { 10 Desktop.getDesktop().open(new File(processName)); 11 } catch (Exception e) { 12 e.printStackTrace(); 13 log.error("应用程序:" + processName + "不存在!"); 14 } 15 } 16 } 17 /** 18 * @desc 杀死进程 19 * @author zp 20 * @throws IOException 21 * @date 2018-3-29 22 */ 23 public static void killProc(String processName) throws IOException { 24 log.info("关闭应用程序:" + processName); 25 if (StringUtils.isNotBlank(processName)) { 26 executeCmd("taskkill /F /IM " + processName); 27 } 28 } 29 /** 30 * @desc 执行cmd命令 31 * @author zp 32 * @date 2018-3-29 33 */ 34 public static String executeCmd(String command) throws IOException { 35 log.info("Execute command : " + command); 36 Runtime runtime = Runtime.getRuntime(); 37 Process process = runtime.exec("cmd /c " + command); 38 BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream(), "UTF-8")); 39 String line = null; 40 StringBuilder build = new StringBuilder(); 41 while ((line = br.readLine()) != null) { 42 log.info(line); 43 build.append(line); 44 } 45 return build.toString(); 46 } 47 /** 48 * @desc 判断进程是否开启 49 * @author zp 50 * @date 2018-3-29 51 */ 52 public static boolean findProcess(String processName) { 53 BufferedReader bufferedReader = null; 54 try { 55 Process proc = Runtime.getRuntime().exec("tasklist -fi " + '"' + "imagename eq " + processName +'"'); 56 bufferedReader = new BufferedReader(new InputStreamReader(proc.getInputStream())); 57 String line = null; 58 while ((line = bufferedReader.readLine()) != null) { 59 if (line.contains(processName)) { 60 return true; 61 } 62 } 63 return false; 64 } catch (Exception ex) { 65 ex.printStackTrace(); 66 return false; 67 } finally { 68 if (bufferedReader != null) { 69 try { 70 bufferedReader.close(); 71 } catch (Exception ex) {} 72 } 73 } 74 } 75 76 //downfile = "D:\\DownFile\\DownFile.exe"; 77 String url = request.getParameter("downfile"); 78 String procName = url.substring(url.lastIndexOf("\\")+1,url.length()); 79 boolean exist= findProcess(procName); 80 try { 81 if (exist) { 82 // 存在,那么就先杀死该进程 83 killProc(procName); 84 // 在启动 85 startProc(url); 86 }else { 87 startProc(url); 88 } 89 } catch (Exception e) { 90 // TODO: handle exception 91 log.error("重启/杀死提取程序失败。。。"); 92 }