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

Snakemake结合Slurm用scancel取消任务时作业ID无效问题求助

问题:Snakemake调用scancel时作业ID解析错误

运行命令:

snakemake --profile slurm -j 1 --cores 1 --cluster-cancel "scancel"

提交作业后输出:

Submitted job 224 with external jobid 'Submitted batch job 54174212'.

按下ctrl + c取消时触发错误:

scancel: error: Invalid job id Submitted batch job 54174212

原因是Snakemake将Slurm返回的完整提交信息当作作业ID传给scancel,而非提取其中的数字ID54174212。


解决方案

方法1:直接在命令行自定义cluster-cancel命令

通过shell工具提取数字ID后再调用scancel,替换原--cluster-cancel参数:

snakemake --profile slurm -j 1 --cores 1 --cluster-cancel "echo {jobid} | sed -n 's/.*batch job \\([0-9]*\\).*/\\1/p' | xargs scancel"

原理:{jobid}会被Snakemake替换为完整的提交字符串,sed通过正则提取其中的数字ID,最后传给scancel。

也可以用awk简化:

snakemake --profile slurm -j 1 --cores 1 --cluster-cancel "echo {jobid} | awk '{print \$4}' | xargs scancel"

方法2:修改Slurm Profile配置文件

如果使用了Slurm profile(通常路径为config/slurm/config.yaml),在配置文件中添加以下内容:

# 自定义作业ID解析规则,提取数字ID
jobid_parser: "sed -n 's/.*batch job \\([0-9]*\\).*/\\1/p'"
# 或者用awk的写法
# jobid_parser: "awk '{print $4}'"

# 指定取消命令,此时{jobid}会是解析后的纯数字
cluster-cancel: "scancel {jobid}"

保存配置后,直接运行原命令即可,Snakemake会自动先解析作业ID再调用scancel。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:01:50