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

如何实现节点分配与命令执行分离并自动终止salloc作业?

可行,用Slurm的salloc+srun --jobid组合就能实现

完全可以做到节点分配和命令执行分离,且无需手动执行scancel,具体步骤如下:

  • 第一步:用salloc分配并保留节点
    执行salloc命令申请节点资源,比如要1个节点、8核:

    salloc --nodes=1 --cpus-per-task=8
    

    命令执行后,Slurm会分配节点并输出作业ID(比如123456),同时在本地启动一个交互式shell——只要这个shell不退出,分配的节点就会一直保留,作业处于运行状态。

  • 第二步:用srun --jobid在已分配节点上多次运行命令
    不管是在当前终端(另开子shell)还是其他终端,都可以通过指定作业ID来在已分配的节点上执行任意命令,比如:

    # 第一次运行脚本
    srun --jobid=123456 ./data_process.sh
    # 第二次运行分析程序
    srun --jobid=123456 ./model_train.py
    

    每一次srun执行完成后,作业不会终止,节点依然保持分配状态,你可以继续执行后续的命令。

  • 第三步:完成所有命令后自动终止作业
    当所有需要运行的命令都执行完毕,只需要在salloc启动的交互式shell中输入exit并回车,Slurm就会自动终止作业、释放节点,完全不需要手动执行scancel。

补充说明

srun --jobid的作用是将任务附加到已存在的作业资源上执行,单个srun任务的完成不会触发作业终止——作业的生命周期由salloc启动的主shell控制,只有当主shell退出,作业才会结束。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 13:45:33