0

MacOSとzshを使用しています。いくつかのJavaプログラムを起動するシェルスクリプトを実行しています。出力を作成すると終了します(基本的にはスクリプトです)。ただし、現在のスクリプトはすべてのJavaプログラムを一度に起動するようです。これは、非常に多くのリソースを消費します。

現在、私のシェルスクリプトは次のようになっています。

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

@bmarguliesがあなたのコマンドの上で述べたように、一度に1つのコマンドを実行する必要があることを示しています。

以下に示すように、シェルスクリプトを変更してみてください。以下の構造を使用すると、前のコマンドが (少なくとも理論上は) 正常に完了した場合にのみ、コマンドが実行されます。

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 に答える
1

あなたは間違っています。シェルはこれらを 1 つずつ実行します。考えられる唯一の説明は、これらのプログラムがバックグラウンド プロセスを起動する場合です。この場合、シェルはプロセスが完了するまで待機する方法を認識できません。

于 2012-12-29T14:32:53.750 に答える