slurm:完成后将退出代码或作业状态写入日志文件(已完成或失败)

时间:2016-05-09 17:35:12

标签: exit-code slurm

我需要确保脚本中的所有命令都成功完成(返回0状态)。这就是为什么我的slurm脚本包含以下几行:

set -e
set -x

现在我想将整个脚本的退出状态写入由slurm自动创建的日志文件中。我已经尝试了echo $SLURM_JOB_EXIT_CODE(没有成功)或echo $?(我不确定是我需要的)作为我脚本的最后一行。

这样做的正确方法是什么?我需要区分"失败"和#34;完成"工作,最好只检查日志文件。

2 个答案:

答案 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