在shell脚本中一次运行一个命令

时间:2012-12-29 14:22:22

标签: shell zsh

我正在使用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程序,以便在两者之间刷新内存?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

正如@bmargulies上面提到的那样,你的命令显示它应该一次运行一个命令。

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

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

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