Как убить процесс удаленных машин с помощью Java API - PullRequest
0 голосов
/ 06 июня 2011

Если процесс запускается через java runtime.exec (через ssh), как вы можете вернуться к этому процессу, чтобы убить его (через ssh)? Есть ли способ получить PID вызванного процесса после его запуска? Является ли отправка «kill» через ssh единственным способом, если PID доступен?

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 голосов
/ 06 июня 2011

Не существует автоматического способа получить PID удаленного компьютера для «prog».Если у вас есть контроль над источником программы, вы можете вывести его PID на стандартный вывод, а затем прочитать его из вашего процесса.

Предполагая, что вы работаете на машине * nix-типа ... Как только вы получитеPID, чтобы убить его, вам нужно будет отправить другую команду на удаленный компьютер, используя ssh.Что-то вроде

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

, загружаемое в новый процесс, должно сработать.

...