从sshj

时间:2018-10-05 09:05:38

标签: java linux sshj

我从控制台启动jar,它运行正常:

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
} 

1 个答案:

答案 0 :(得分:0)

解决方案:

  • 使用先前的命令,我cd到了jar所在的目录。

  • 但是此cp并没有消除使用完整路径保存在之后运行的命令中使用的文件的必要性