当使用 slurm 运行时,bash 中的 for 循环无限运行

当使用 slurm 运行时,bash 中的 for 循环无限运行

我有一个名为 edit.sh 的 bash 脚本,其中包含以下代码块:

z=$(tail -1 mol-pos-1.xyz | awk '{print $NF}')

echo "before loop: z is $z" >> log

for ((r=0; $(echo "$z>20" | bc -l); r++)); do
    echo "entering loop" >> log

    ll=$(tail -n 1 mol-1.restart)

    if echo "$ll" | grep -q "&END FORCE_EVAL"; then   #check whether mol-1.restart file is written properly
        cp mol-1.restart run.inp
        echo "copied into run.inp" >> log 
        # See https://en.wikipedia.org/wiki/CP2K for a description 
        # of CP2K
        cp2k.popt run.inp >> output$r.out 2>> error$r.err &
        wait

        echo "inside if" >> out
    fi

    echo "done running cp2k after $r repeats" >> log
    z=$(tail -1 mol-pos-1.xyz | awk '{print $NF}')
    echo "z is $z" >> log
done

echo "left loop successfully" >> log

当我在节点上手动运行此脚本时,它运行良好。但是当我通过运行它时斯鲁姆,我最终陷入了一个无限循环,有许多 output$r.out 和 error$r.err 文件。日志文件还表明循环正在无限运行。

然而,所有的output$r.out 和error$r.err 文件都是完全空的。这不是环境/路径问题,因为否则我应该在这些文件中收到一些错误。手动执行时也不会运行。

我不明白发生了什么事。

slurm 脚本有以下提交命令:

EXEC="sh edit.sh"
FILE=depo
(mpiexec.hydra -launcher=ssh -genv I_MPI_PIN_PROCESSOR_LIST $(echo "${irun}" | awk '{print $1*1}') -genv OMP_NUM_THREADS 1 -np 1 ${EXEC} ${FILE}.inp >> ${FILE}.out 2>> ${FILE}.err || exit 1) &

为什么这个命令不能正常运行?

相关内容