从 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


宝慕林4294392
浏览 150回答 1
1回答

慕妹3146593

解决方案:使用之前的命令,我必须cd找到 jar 所在的目录。但这cp并不能消除在之后运行的命令中使用的文件的完整路径的需要
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java