我jar
从控制台启动 a 并且它运行良好:
nohup /usr/bin/java -jar payara-micro-5.183.jar myapp.war > log.out 2>&1 & echo $!
当我从远程计算机运行相同的命令时sshj
,它返回一个 pid,但在控制台中看不到该进程,实际上该进程没有运行。在这两种情况下,我都通过 ssh、公钥和同一个用户登录。
通过以下方式运行命令的代码sshj
:
try (Session session = sshClient.startSession()) {
final Command cmd = session.exec("nohup /usr/bin/java -jar payara-micro-5.183.jar myapp.war > log.out 2>&1 & echo $!");
String response = (IOUtils.readFully(cmd.getInputStream()).toString());
// response shows a pid number
cmd.join(2, TimeUnit.SECONDS);
System.out.println("\n** exit status: " + cmd.getExitStatus());
//exit status is 0
}