我试图通过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()并不是最好的解决方案,但是我无法弄清楚为什么它不能工作。
答案 0 :(得分:0)
似乎删除单引号就是答案。仍在努力找到原因。
String command = "ssh " + machineToRunOn + " simple.sh &>/dev/null &";
try {
Process p = Runtime.getRuntime().exec(command);
p.waitFor();
int exitStatus = p.exitValue();
}