[英]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.