如何使用java api终止远程机器进程

时间:2011-06-06 19:45:09

标签: java ssh kill runtime.exec

如果一个进程是通过java runtime.exec(通过ssh)启动的,你怎么回到这个进程来杀死它(通过ssh)?有没有办法在启动后获取调用过程的PID?如果可以获得PID,通过ssh发送“kill”是唯一的方法吗?

Process p;

public void startSomething()
{

 String[] cmd = {"/usr/bin/ssh", "remoteIPAdd", "./prog"};

 try
 {
   p = Runtime.getRuntime().exec(cmd);
 }
 catch(IOException e)
 { 
    System.out.print("Epic Fail");
 }

}
public void stopSomething()
{

  //p.destroy if local would work but not remotely
  //How do I stop the remote process then?

}

1 个答案:

答案 0 :(得分:0)

没有任何自动方法可以获取远程机器的“prog”PID。如果你控制了prog的源代码,你可以将它的PID输出到stdout,然后你可以从你的Process中读取它。

假设您使用的是* nix型机器......一旦有了PID,要杀死它,您需要使用ssh向远程机器发送另一个命令。像

这样的东西
String[] cmdKill = {"/usr/bin/ssh", "remoteIPAdd", "/bin/kill", ""+pid};

被投入新流程应该可以解决问题。