Sto usando sshj e sto cercando di accodare un file, ma il mio problema è che il processo remoto non viene mai ucciso.Come uccidere un processo tramite sshj
Nel seguente codice di esempio è possibile vedere che provo a tail/var/log/syslog e quindi invio un segnale di kill al processo. Tuttavia, dopo che l'applicazione si è arrestata e ho elencato tutti i processi sul server, posso ancora vedere un processo di coda attivo.
Perché questo codice non uccide il processo? e cosa posso fare per rimediare a questo?
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
provato anche l'invio di tutti i segnali disponibili.
for(Signal s : Signal.values()){
cmd.signal(s);
}
vedi effettivamente la riga di stato '** exit:' nell'output del programma? –
Sì, '** stato di uscita: null'. – netbrain
puoi provare con un altro segnale, ad esempio 'TERM' (il valore predefinito utilizzato dall'utilità della riga di comando kill)? –