我试图在Java中的远程服务器上执行的四个命令。由于命令涉及出口,我已经链接在一起他们进入一个命令:Java和SSH导致挂起
rm -f nohup.out && export <a few similar commands> && nohup #here I execute a
startup script#>nohup.out >nohup.out 2>nohup.err </dev/null &
那么我想等一会(大约30秒),并从分析nohup.out的IP地址。我遇到的问题是程序挂起并且似乎没有断开连接 - 调试代码指示它在下面的代码块中的某处断开,因为它实际上成功地执行了命令服务器端
如何我是否成功关闭连接?
发送代码,它使用JSch和来自在此网站的upvoted溶液如下。在这之后有一条调试线路,它永远不会到达。
((ChannelExec)channel).setCommand(command);
InputStream commandOutput = channel.getInputStream();
channel.connect();
int readByte = commandOutput.read();
while(readByte != 0xffffffff)
//while (true)
{
outputBuffer.append((char)readByte);
readByte = commandOutput.read();
}
你需要什么的'nohup'和'&'呢? –
服务器端脚本我跑吐出了很多东西,我不在乎 - 我只关心一个行包含一个IP地址。坦率地说,我对ssh知之甚少,因此我可能根本不需要nohup。我的想法是,它会抑制输出,并允许java程序关闭而不会终止服务器端程序。我用错了吗? –
我能想到的不nohup的另一种选择将是连续监测服务器输出,直至IP地址显示出来 –