![이전 단계의 최종 결과가 완료될 때까지 기다립니다. 가능합니까?](https://linux55.com/image/199406/%EC%9D%B4%EC%A0%84%20%EB%8B%A8%EA%B3%84%EC%9D%98%20%EC%B5%9C%EC%A2%85%20%EA%B2%B0%EA%B3%BC%EA%B0%80%20%EC%99%84%EB%A3%8C%EB%90%A0%20%EB%95%8C%EA%B9%8C%EC%A7%80%20%EA%B8%B0%EB%8B%A4%EB%A6%BD%EB%8B%88%EB%8B%A4.%20%EA%B0%80%EB%8A%A5%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
나는 여러 가지 작업을 순차적으로 수행하는 커밋 스크립트를 가지고 있습니다(적어도 제가 작성한 방식은 그렇습니다). 하지만 스크립트를 실행하면 최종 작업의 동작은 이전 작업이 완료된 순서에 따라 결정됩니다. 첨부 파일은 스크립트의 일부입니다.
#!/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 etc.) 나는 이것이 각각의 순서라고 믿습니다. 작업은 완료된 순서대로 발생하지만 array_id에 따라 순서대로 진행되어야 합니다. 누군가 나를 도와줄 수 있나요? PS - SBATCH는 스크립트를 병렬로 실행합니다.