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("已执行杀进程");
}
版权声明:本文为yizw原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。