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();
もちろん、それが開始するプロセスは開始されます。また、シェルから実行された同じ行はすぐに戻ります。
これを克服する理由と方法はありますか?
編集: join() を実行せずにコマンドの sysout を読み取ると、同じことが起こります (commons-io を使用):
IOUtils.toString(commandObject.getInputStream()))