You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在Slurm作业执行后于登录节点运行指定后置脚本?

Slurm任务完成后在登录节点执行指定脚本的方案

Slurm本身没有类似--at-end-run这种直接在登录节点触发后续脚本的原生参数,不过有几种可行的方式实现需求:

  • 提交任务时追加后台轮询逻辑
    在提交任务的命令后直接跟上一段检查任务状态的脚本,放到后台运行。比如:

    sbatch my_job.sh && export JOB_ID=$(squeue -u $USER --format="%i" --noheader | head -n1) && while squeue -j $JOB_ID >/dev/null 2>&1; do sleep 60; done && bash post-script.sh &
    

    这段命令会在提交任务后,后台每隔60秒检查任务是否还在队列中,一旦任务结束(从队列消失),就自动执行指定的post-script.sh。如果需要更精准的状态判断,可以用sacct命令替代squeue,比如检查任务状态是否为COMPLETED或FAILED。

  • 借助邮件通知触发(需集群支持邮件服务)
    在任务脚本中添加#SBATCH --mail-type=END和#SBATCH --mail-user=your_email@xxx.com,让Slurm在任务结束时发送通知邮件。然后在登录节点运行一个监控邮件的脚本,当收到对应任务的结束邮件时,触发post-script.sh。这种方法依赖邮件服务,配置复杂度较高,不如轮询方式直接可靠。

需要注意:所有通过#SBATCH参数指定的执行逻辑,都是在任务所在的计算节点上运行的,无法直接让Slurm在登录节点启动后续脚本。因此,轮询任务状态是最直接且可靠的实现方式。

内容的提问来源于stack exchange,提问作者MPEI_stud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 04:40:24