2014-06-29 46 views
1

我想在java中使用Jsch庫在遠程服務器上執行命令。即使java代碼終止,JSch會繼續執行該命令嗎?

((ChannelExec) channel).setCommand(command); 
channel.connect(); 

現在我期望命令需要一些時間在遠程服務器上運行(比如30分鐘)。 在此期間,如果java程序中止, 在服務器中運行的命令會發生什麼情況? 它繼續運行嗎? 它會中止嗎?

回答

0

Jsch本質上並沒有清理會話和頻道,您必須特別關閉它們,否則它們將一直存在,直到您連接到的主機終止。

但是,如果您的java程序關閉並且JVM清理完畢,會話將在您的端點終止,並且大多數主機系統會在您的程序結束前等待您。

您需要讓您的Java程序在後臺作爲守護程序運行程序。這將允許該命令在斷開會話後繼續處理。

ChannelExec.setCommand(「myCommand>/dev/null 2> 」);