Im przy użyciu sshj i im próbuje ogłosić plik, ale moim problemem jest to, że zdalny proces nigdy nie jest zabity.Zabijanie procesu poprzez sshj
W poniższym przykładzie widać, że próbuję zmienić/var/log/syslog, a następnie wysyłam sygnał kill do procesu. Jednak po zatrzymaniu aplikacji i wyświetleniu listy wszystkich procesów na serwerze nadal widzę aktywny proces końcowy.
Dlaczego ten kod nie zabija procesu? i co mogę zrobić, aby temu zaradzić?
SSHClient ssh = new SSHClient();
ssh.addHostKeyVerifier(new PromiscuousVerifier());
try {
ssh.connect("localhost");
ssh.authPassword("xxx", "xxx");
final Session session = ssh.startSession();
try {
final Command cmd = session.exec("tail -f /var/log/syslog");
cmd.signal(Signal.KILL);
System.out.println("\n** exit status: " + cmd.getExitStatus());
} catch (IOException e) {
e.printStackTrace();
}finally{
session.close();
}
} finally{
ssh.disconnect();
}
EDIT
próbował również wysyłając wszystkie dostępne sygnały.
for(Signal s : Signal.values()){
cmd.signal(s);
}
Czy rzeczywiście widzisz linię '** status wyjścia:' w wynikach programu? –
Tak, '** status wyjścia: null'. – netbrain
możesz spróbować z innym sygnałem, np. 'TERM' (domyślnie używanym przez narzędzie wiersza poleceń kill)? –