我使用script1提交了工作。在script1中,我一起提交了许多单独的作业,以避免冗长的排队时间。现在,由于许多单独的作业步骤而出现了问题。每当一个工作步骤完成时,它就被写入slurm数据库。出于备份原因,管理员每天早上5点每天转储数据库,转储数据库大约需要20分钟。如果作业步骤在此时隙中完成,则它将无法访问数据库,并且在一段时间后,作业将中止。
为解决上述问题,我使用了script2,从凌晨4点到凌晨6点,我将工作保持在睡眠模式2个小时。不幸的是,问题再次发生。我如何摆脱这个问题,而忽略备份时间,继续运行我的工作?
谢谢
===== script1 ======
#!/bin/bash
#SBATCH -J all
#SBATCH -N 8
#SBATCH --ntasks-per-node=24
#SBATCH --ntasks-per-core=1
#SBATCH --mail-type=ALL
EXECUTABLE=path
for i in {33..110..1}
do
mkdir $i
cd $i
ulimit -s unlimited
srun -np 128 $EXECUTABLE 1>out 2>err
echo "finished time `date +%H%M%S`"
echo "done"
sleep 10
cd ../
done
echo "END"
====== script2 =====
#!/bin/bash
#SBATCH -J all
#SBATCH -N 8
#SBATCH --ntasks-per-node=24
#SBATCH --ntasks-per-core=1
#SBATCH --mail-type=ALL
EXECUTABLE=path
for i in {33..110..1}
do
mkdir $i
cd $i
ulimit -s unlimited
srun -np 128 $EXECUTABLE 1>out 2>err
echo "finished time `date +%H%M%S`"
echo "done"
sleep 10
cd ../
###********Time check********
timenow="`date +%H%M%S`"
echo "in time $timenow"
if [[ "$timenow" > 040000 && "$timenow" < 060000 ]]
then
echo "done"
sleep 2h
fi
echo "out time `date +%H%M%S`"
done
echo "END"