【发布时间】:2016-01-18 18:13:54
【问题描述】:
我正在尝试通过 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() 不是最好的解决方案,但我不知道为什么这不起作用。
【问题讨论】: