나는 여러 가지 작업을 순차적으로 수행하는 커밋 스크립트를 가지고 있습니다(적어도 제가 작성한 방식은 그렇습니다). 하지만 스크립트를 실행하면 최종 작업의 동작은 이전 작업이 완료된 순서에 따라 결정됩니다. 첨부 파일은 스크립트의 일부입니다.
#!/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는 스크립트를 병렬로 실행합니다.