繁体   English   中英

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

[英]Running shell script in background via java exec() returns exit code 127

我正在尝试通过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()并不是最好的解决方案,但是我不知道为什么这不起作用。

似乎删除单引号就是答案。 仍在尝试弄清为什么。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM