私は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);
}