0

我正在使用 Mac OS 和 zsh。我正在运行一个启动多个 Java 程序的 shell 脚本。一旦创建了输出(它们本质上是脚本),它们就会终止。但是,我当前的脚本似乎一次启动了所有 Java 程序,这非常耗费资源。

目前我的 shell 脚本如下所示:

java -Xmx2048M -jar gha.jar params1.yaml
java -Xmx2048M -jar gha.jar params2.yaml
java -Xmx2048M -jar gha.jar params3.yaml

当我运行它时,我的内存不足。如何修改我的脚本,使其仅在第一个 Java 程序终止后才启动下一个 Java 程序,以便在两者之间刷新内存?

4

2 回答 2

1

你误会了。shell 将一次运行这些。唯一可能的解释是这些程序是否启动后台进程,在这种情况下,shell 无法知道如何等待它们完成。

于 2012-12-29T14:32:53.750 回答
1

正如上面提到的@bmargulies 所说,您的命令应该一次运行一个命令。

尝试修改您的 shell 脚本,如下所示。仅当前一个命令成功完成(至少在理论上)时,才运行命令下方的构造。

java -Xmx2048M -jar gha.jar params1.yaml && java -Xmx2048M -jar gha.jar params2.yaml && java -Xmx2048M -jar gha.jar params3.yaml

如果这不起作用,请在后台运行脚本并列出当前正在运行的进程。希望这能让您了解系统上正在运行的内容。

于 2012-12-30T08:41:31.320 回答