2014-06-29 40 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> ”);