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

时间:2016-01-18 18:13:55

标签: java ssh exec

我试图通过java Runtime.exec()在linux机器上运行命令,它将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 个答案:

答案 0 :(得分:0)

似乎删除单引号就是答案。仍在努力找到原因。

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