有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

通过java exec()在后台运行shell脚本的ssh返回退出代码127

我正试图通过java运行时在linux机器上运行一个命令。exec(),它将ssh连接到另一台机器并在后台启动脚本,将输出重定向到/dev/null。脚本有可能永远运行,因此我将其发送到后台

String command = "ssh " + machineToRunOn + " 'simple.sh &>/dev/null &'";
 try {
            Process p = Runtime.getRuntime().exec(command);
            p.waitFor();
            int exitStatus = p.exitValue();
 }

问题是exitStatus总是非零(具体来说是127),并且脚本无法运行

我可以在终端上手动运行相同的命令,而且效果很好。同样,我可以运行一个脚本,而不需要将它发送到后台或通过exec()重新定向,它也可以正常运行

我意识到使用exec()并不是最好的解决方案,但我不明白为什么这样做行不通


共 (1) 个答案

  1. # 1 楼答案

    似乎删除单引号就是答案。仍在试图弄清原因

    String command = "ssh " + machineToRunOn + " simple.sh &>/dev/null &";
     try {
                Process p = Runtime.getRuntime().exec(command);
                p.waitFor();
                int exitStatus = p.exitValue();
     }