我試圖在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地址顯示出來 –