java kill进程命令_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("已执行杀进程");

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值