我需要确保脚本中的所有命令都成功完成(返回0状态)。这就是为什么我的slurm脚本包含以下几行:
set -e
set -x
现在我想将整个脚本的退出状态写入由slurm自动创建的日志文件中。我已经尝试了echo $SLURM_JOB_EXIT_CODE
(没有成功)或echo $?
(我不确定是我需要的)作为我脚本的最后一行。
这样做的正确方法是什么?我需要区分"失败"和#34;完成"工作,最好只检查日志文件。
答案 0 :(得分:2)
无法在脚本中捕获脚本的退出代码,因此您应该
sacct
命令从Slurm的会计中获取返回码。答案 1 :(得分:0)
我知道这是一个老问题,但这是我将最终作业状态附加到Slurm输出的方法。
res=$(sbatch job.sh)
echo $res
sleep 10s
ST="PENDING"
while [[ "$ST" != "COMPLETED" && "$ST" != "FAILED" ]] ; do
ST=$(sacct -j ${res##* } -o State | awk 'FNR == 3 {print $1}')
sleep 10s
done
echo "$ST" >> job.out # assuming stdout writes to job.out