前の手順の最終結果が完了するまで待ちます。可能ですか?

前の手順の最終結果が完了するまで待ちます。可能ですか?

私はいくつかのタスクを順番に実行するコミットスクリプトを持っています(少なくとも私が書いた方法はそうです)。ただし、スクリプトを実行すると、最後のジョブの動作は、前のジョブが完了した順序によって決まります。添付ファイルはスクリプトの一部です。

#!/bin/bash                                                                                                                                                                                    
#SBATCH --job-name=cff_cg                                                                                                                                                                      
#SBATCH --nodes=1 --ntasks=20                                                                                                                                                                  
#SBATCH --time=0-06:00:00                                                                                                                                                                      
#SBATCH --mem-per-cpu=4gb                                                                                                                                                                      
#SBATCH --constraint=avx512                                                                                                                                                                    
#SBATCH --partition=sixhour                                                                                                                                                                    
#SBATCH --output=1_%a.out                                                                                                                                                                      
#SBATCH --array=1-100
.
.
.
.
.
.
.
.
if [[ -f $main_path/surf_$fold/data.lammps ]] ; then
    echo 'EXISTS'
    check=$(awk 'FNR == 21 {print $2}' $main_path/surf_$fold/data.lammps)
    echo "$check"
    if [[ $check == '1' ]] ; then
        awk 'f{print $3; f=0} /Energy/{f=1}' $main_path/surf_$fold/log.lammps > $main_path/surf_$fold/min_energy.dat
        awk '/Energy/{ if (secondline==0) { secondline=1; next; } else { getline; print $3; } }' $main_path/surf_$fold/log.lammps > $main_path/surf_$fold/min_energy_$fold.dat
    fi
fi


wait

cat $main_path/surf_$fold/min_energy_$fold.dat >> $main_path/energy_final_new.dat

exit 0

最終出力ファイル「energy_final_new.dat」を取得する方法は、配列の順序に従います。つまり、値の順序は001,002,003,004ですが、私が得るのは値の順序が混在していることです(一度私はget 002,004,003,001など)私はこれがそれぞれの順序だと思います。操作は完了した順序で行われますが、array_idに従って順番に進む必要があります。誰かが私を助けることができますか? PS - SBATCHはスクリプトを並列に実行します。

ベストアンサー1

おすすめ記事