我正在使用 sshj 并试图跟踪文件,但我的问题是远程进程永远不会被杀死。
在以下示例代码中,您可以看到我尝试跟踪 /var/log/syslog,然后向进程发送终止信号。但是,在应用程序停止并列出服务器上的所有进程后,我仍然可以看到一个活动的尾进程。
为什么这段代码不会杀死进程?我能做些什么来补救呢?
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);
}