等待上一步操作的最终结果完成。这可能吗?

等待上一步操作的最终结果完成。这可能吗?

我有一个提交脚本,它按顺序执行几件事(至少我是这样写的)。但是当我运行脚本时,最终操作的行为将根据前一个操作的完成顺序进行。附件是脚本的一部分。

#!/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,但我得到的是混合顺序的值(一旦我得到了002,004,003,001等)我相信这是按照每个作业完成的顺序发生的,但我需要它们按照 array_id 的顺序排列。有人可以帮我弄这个吗? PS - SBATCH 使脚本并行运行。

相关内容