【问题标题】:How do I kill a remote machines process using java api如何使用 java api 杀死远程机器进程
【发布时间】:2011-06-06 19:45:08
【问题描述】:

如果一个进程是通过 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?

}

【问题讨论】:

    标签: java ssh kill runtime.exec


    【解决方案1】:

    没有任何自动方法可以为“prog”获取远程机器的 PID。如果你可以控制 prog 的源,你可以让它输出它的 PID 到标准输出,然后你可以从你的进程中读取它。

    假设你在一台 *nix 类型的机器上……一旦你有了 PID,要杀死它,你需要使用 ssh 向远程机器发送另一个命令。类似的东西

    String[] cmdKill = {"/usr/bin/ssh", "remoteIPAdd", "/bin/kill", ""+pid};
    

    被送入一个新进程应该可以解决问题。

    【讨论】:

      猜你喜欢
      • 2014-11-01
      • 1970-01-01
      • 2014-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多