0

私はこのようにしようとしていますが、何らかの理由でbashが終了できないため、改善可能であると確信しています...

  #!/bash/bin

  cd directory
  gfortran -O3 code1.f90 -o a1.out
  gfortran -O3 code2.f90 -o a2.out
  gfortran -O3 code3.f90 -o a3.out
  gfortran -O3 code4.f90 -o a4.out
  gfortran -O3 code5.f90 -o a5.out
  gfortran -O3 code6.f90 -o a6.out

  ./a1.out & ./a2.out & ./a3.out & ./a4.out & ./a5.out & ./a6.out 

  echo fin

どうもありがとう!

アップデート:

私はこのように試しました: cd BC_EQ

  nohup sh -c "gfortran -O3 -fopenmp LBM_Re100_N150_Ma01_BC_Eq.f90  -o a1.out && ./a1.out " &
  nohup sh -c "gfortran -O3 -fopenmp LBM_Re100_N150_Ma015_BC_Eq.f90 -o a2.out && ./a2.out " &
  nohup sh -c "gfortran -O3 -fopenmp LBM_Re100_N150_Ma02_BC_Eq.f90  -o a3.out && ./a3.out " &
  nohup sh -c "gfortran -O3 -fopenmp LBM_Re125_N150_Ma01_BC_Eq.f90  -o a4.out && ./a4.out " &
  nohup sh -c "gfortran -O3 -fopenmp LBM_Re125_N150_Ma015_BC_Eq.f90 -o a5.out && ./a5.out " &
  nohup sh -c "gfortran -O3 -fopenmp LBM_Re125_N150_Ma02_BC_Eq.f90  -o a6.out && ./a6.out " &

エコー・ジャ・エスタ

しかし、最終的には唾を吐きます:

nohup: 出力をnohup.out にnohup.out' nohup: nohup: appending output to追加する 出力を `nohup.out' に追加する

6 つのコードのうち 4 つだけが実行されており、以前のように画面に何も出力されません.. なぜ??

次に、私が試してみると:

    #!/bash/bin

   cd BC_EQ

   gfortran -O3 -fopenmp LBM_Re100_N150_Ma01_BC_Eq.f90  -o a1.out && ./a1.out &
   gfortran -O3 -fopenmp LBM_Re100_N150_Ma015_BC_Eq.f90 -o a2.out && ./a2.out &
   gfortran -O3 -fopenmp LBM_Re100_N150_Ma02_BC_Eq.f90  -o a3.out && ./a3.out &
   gfortran -O3 -fopenmp LBM_Re125_N150_Ma01_BC_Eq.f90  -o a4.out && ./a4.out &
   gfortran -O3 -fopenmp LBM_Re125_N150_Ma015_BC_Eq.f90 -o a5.out && ./a5.out &
   gfortran -O3 -fopenmp LBM_Re125_N150_Ma02_BC_Eq.f90  -o a6.out && ./a6.out 

   echo ja està

エラーが表示されます: 致命的なエラー: 一時モジュール ファイル 'cellconst.mod0' を削除できません: そのようなファイルまたはディレクトリはありません 致命的なエラー: 一時モジュール ファイル 'cellconst.mod0' を削除できません: そのようなファイルまたはディレクトリはありません 致命的なエラー:一時モジュール ファイル 'cellconst.mod0' を削除できません: そのようなファイルまたはディレクトリはありません 致命的エラー: 一時モジュール ファイル 'cellconst.mod0' を削除できません: そのようなファイルまたはディレクトリはありません 致命的エラー: 一時モジュール ファイルを削除できません ' d2q9const.mod0': そのようなファイルまたはディレクトリはありません

._·

4

3 に答える 3

1

ここでの問題は、バックグラウンドで実行する各コマンドの後にamersandを追加する必要があることです。それはa6また後を意味します:./a6.out &

ただしfor、プロセスを少し自動化するために使用することをお勧めします。

for i in {1..6}
do
  nohup ./a$i.out &
done

また、コンパイルを並行して行うこともできます。

for i in {1..6}
do
  nohup sh -c "gfortran -O3 code$i.f90 -o a$i.out && ./a$i.out" &
done
于 2012-08-01T10:06:44.907 に答える
1

同様に、最後の a6.out の後にアンパサンドを追加します。

于 2012-08-01T10:06:20.063 に答える
0

これを試して :

 ./a1.out &
 PIDS=$!
 ./a2.out &
 PIDS="$PIDS "$!
 ./a3.out &
 PIDS="$PIDS "$!
 ./a4.out &
 PIDS="$PIDS "$!
 ./a5.out &
 PIDS="$PIDS "$!
 ./a6.out &
 PIDS="$PIDS "$!

 wait $PIDS

アップデート:

$!::man bash /Special Parameters最後に実行されたバックグラウンド(非同期)コマンドのプロセスIDに展開されます。

PIDSは、スペースで区切られたプロセスIDを含む変数であるため、展開によって待機する引数のリストが提供されます。

于 2012-08-01T10:13:23.800 に答える