0

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
} 
4

1 回答 1

0

解决方案:

  • 使用前面的命令,我必须cd进入 jar 所在的目录。

  • 但这cp并没有消除使用完整路径的需要,这些文件在之后运行的命令中使用

于 2018-10-05T09:28:54.763 回答