我使用 SSHJ 执行一些命令,我使用这种方法:
private Command executeCommand(String command, SSHClient client) {
Command commandObject = client.startSession().exec(command);
commandObject.join();
return commandObject;
}
在我执行此命令之前它运行良好:
cd $SOLR; nohup java -Dsolr.solr.home=./solr -DSTOP.PORT=8079 -DSTOP.KEY=stopkey -jar start.jar 2> logs/solr.log &
在这种情况下,整个程序挂起
commandObject.join();
当然,它开始的过程已经开始。从 shell 执行的同一行也会立即返回。
知道为什么以及如何克服这个问题吗?
编辑:当我不加入()但读取命令的 sysout(使用 commons-io)时,也会发生同样的情况:
IOUtils.toString(commandObject.getInputStream()))