我使用sshj和即时尝试尾部文件,但我的问题是远程进程永远不会被杀死。通过sshj杀死一个进程
在下面的示例代码中,您可以看到我尝试尾部/ var/log/syslog,然后向该进程发送kill信号。但是,在应用程序停止并列出服务器上的所有进程之后,我仍然可以看到活动的尾部进程。
为什么这段代码不会杀死进程?我能做些什么来补救呢?
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();
}
编辑
还试图将所有可用的信号。
for(Signal s : Signal.values()){
cmd.signal(s);
}
你真的在程序的输出中看到'** exit status:'行吗? –
是的,**退出状态:空。 – netbrain
你可以尝试使用另一个信号,例如'TERM'(kill命令行实用程序使用的默认值)? –