8

我正在使用 java Runtime.exec() 方法来执行 bat 文件,在 bat 文件中我编写了执行 jar 的代码。这个 jar 包含线程类,该线程类汇集了 rabbitmq 队列的无限时间,如果找到消息然后对其执行操作,意味着该过程将无限运行。我想用java代码杀死这个进程,我也想知道这个方法能不能在Linux操作系统上执行shall脚本。

 **Used java code**

 String myCMD = "cmd.exe /C start c:\\elasticmgmtservice.bat";
 Runtime rt = Runtime.getRuntime();
 Process proc = rt.exec(myCMD);

**used batch file**

cd c: 
cd ElasticMgmtService\ 
java -jar ElasticIndexManagementService.jar config\ElasticIndexManagementService.xml

请帮我解决问题。

4

3 回答 3

3

Runtime.exec(...) 返回Process包含以下方法的对象

  • 破坏()
  • 退出值()
  • 获取错误流()
  • 获取输入流()
  • 获取输出流()
  • 等待()

您可以调用 destroy() 来杀死子进程。此 Process 对象所代表的子进程被强制终止。taskkill /PID <process id>或者你可以通过传入Runtime.exec(...)或杀死kill -9 <process id>

于 2012-05-03T12:50:52.767 回答
2

在 Windows 中

Runtime rt = Runtime.getRuntime();
rt.exec("taskkill " +<Your process>);

在 Linux 中

Runtime rt = Runtime.getRuntime();
rt.exec("kill -9 " +<Your process>);
于 2012-05-03T12:47:54.823 回答
0

Runtime.exec()返回一个 Process 对象,它是 exec 方法创建的进程的处理程序。要终止此进程,您必须调用Process.destroy();

于 2012-05-03T12:43:09.980 回答