我需要通过sshj执行shell脚本并在不等待脚本完成的情况下断开连接。脚本可能需要很长时间才能完成,因此我将创建额外的Java代码来定期检查脚本的结果。如何在不等待shell脚本完成的情况下断开sshj会话?
发布于 2014-01-10 04:59:30
使用&结束您的命令。示例:
nohup /usr/bin/longRunningProcess &一旦提交了该命令(例如,提交命令然后调用Command.join()),您就可以断开连接,longRunningProcess将在后台继续。另一件要担心的事情是命令的输出。您必须将stdout和stderr重定向到其他地方,例如/dev/null文件。因此,该命令将如下所示:
nohup /usr/bin/longRunningProcess > /dev/null 2>&1 &Java代码应该是这样的:
SSHClient client = ...
Session session = ...
Command command = session.exec(yourCommand);
// Wait for command to be submitted
command.join();
// Do some error checking by checking command.getExitStatus()
...
// Disconnect
session.close();
client.close();https://stackoverflow.com/questions/17237210
复制相似问题