通过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 楼答案
似乎删除单引号就是答案。仍在试图弄清原因