【问题标题】:Running shell script in background via java exec() returns exit code 127通过 java exec() 在后台运行 shell 脚本返回退出代码 127
【发布时间】: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() 不是最好的解决方案,但我不知道为什么这不起作用。

【问题讨论】:

    标签: java ssh exec


    【解决方案1】:

    似乎删除单引号就是答案。仍在试图找出原因。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-10
      • 2013-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多