当前位置: 首页 > 面试题库 >

从Java同步运行Shell脚本

耿玄裳
2023-03-14
问题内容

我正在尝试从Java执行Bash Shell脚本,并且使用这段代码可以正常运行。

public void executeScript() {
    try {
        new ProcessBuilder("myscript.sh").start();
        System.out.println("Script executed successfully");
    } catch (IOException e) {
        e.printStackTrace();
    }
}

上面的代码异步运行良好。但是我想实现的是同步执行代码。我希望Java进程等到脚本执行完成后再执行下一批代码。

总而言之,我希望在批处理文件(“ myscript.sh”)完成执行 之后 执行“打印语句-脚本成功执行”。

谢谢


问题答案:

你要等待进程结束,这是WAITFOR()这样的

public void executeScript() {
  try {
    ProcessBuilder pb = new ProcessBuilder(
      "myscript.sh");
    Process p = pb.start();     // Start the process.
    p.waitFor();                // Wait for the process to finish.
    System.out.println("Script executed successfully");
  } catch (Exception e) {
    e.printStackTrace();
  }
}


 类似资料:
  • 问题内容: 我快要解决这个问题了。 下面是代码: 问题答案: 您的代码是正确的,我相信您不会收到异常,如果您使用进行阅读,则不会得到任何东西。 已经说过,现在命令是100%以这种方式执行,这是因为您正在回显某些内容,需要使用来将其读回。 检查以下示例,该示例将成功创建一个名目录并打印您正在回显的内容。为了将其放入日志文件,恐怕您可以使用“>”来完成它,您可能必须使用一些编辑器命令或使用Java创建

  • 问题内容: 我想从Java程序中异步运行Shell脚本-即在Java程序开始执行该Shell脚本之后,它会继续执行其他操作-并且仅当Shell脚本返回对其的响应时才做进一步的工作..即,它不会显式停止并等待shell脚本的响应。 这可能/可行吗?如何实现这种功能? 基本上,我将使用一个将管理所有这些服务器的服务器来监视多个服务器-为此,它将在每个服务器上运行shell脚本…因为有许多服务器,因此在

  • 问题内容: 我正在使用Runtime.getRuntime()。exec()从Java代码运行Shell脚本。当我将参数作为字符串传递时,代码工作正常 由于必须传递带有空格的路径的其他参数,因此我将String替换为String数组。 我也尝试过 但是他们两个都不起作用。它的抛出异常 当以String形式传递时和与String数组一起使用时,为什么相同的脚本文件会引发异常。有没有人遇到过这个问题。

  • 问题内容: 从Java运行Unix命令非常简单。 但是可以从Java代码运行Unix Shell脚本吗?如果是,从Java代码中运行Shell脚本是一个好习惯吗? 问题答案: 你应该真正看一下Process Builder。它确实是为这种事情而构建的。

  • 问题内容: 我想从下面的程序中运行一个shell脚本,但它似乎无能为力。我已经直接在linux终端中运行了相同的命令,它运行正常,所以我猜这是我的Java代码。如您所见,我首先使用PrintWriter将命令写入Shell脚本,但我希望这不会影响Shell脚本本身的运行。任何帮助,将不胜感激! 问题答案: 您应该使用返回的结果。 将命令作为单独的进程执行,并返回类型为的对象。您应该调用以便程序等待

  • 问题内容: 我有一个shell脚本 随机播放大型文本文件(600万行和6列) 根据第一列对文件进行排序 输出1000个文件 所以伪代码看起来像这样 有没有一种方法可以运行此Shell脚本以充分利用多核CPU? 在这一刻, 。按1到1000的顺序执行,非常慢。 谢谢你的帮助。 问题答案: 查看bash子外壳程序,这些外壳程序可用于并行运行脚本的各个部分。 我还没有测试过,但这可能是一个开始: