Snakemake 9.6.3(SLURM集群)作业状态查询替代方案咨询
针对Snakemake 9.6.3 + SLURM的作业状态追踪方案
1. 获取集群作业状态的替代方法
- 用SLURM原生命令
sacct批量查询:Snakemake提交的SLURM作业默认以snakemake-为前缀命名,可通过以下命令过滤并获取所有相关作业的状态:
输出结果包含作业ID、名称、状态及退出码,覆盖所有已提交作业的状态信息。sacct -n -o JobID,JobName,State,ExitCode | grep snakemake- - 生成Snakemake内置报告:运行工作流时添加
--report workflow_report.html参数,工作流结束后会生成HTML格式的报告,其中包含每个规则对应作业的状态、运行时长、资源消耗等全局信息,无需额外脚本即可统一查看。
2. 追踪每个作业的成败情况
- 配置规则级日志:在Snakefile中为每个规则指定
log字段,将作业的标准输出和错误输出定向到指定文件,示例如下:
作业失败时,对应日志文件会记录具体错误信息,直接查看即可定位问题。rule process_data: input: "raw/data.txt" output: "processed/data.txt" log: "logs/process_data.log" shell: "python scripts/process.py {input} {output}" - 实时控制台输出监控:运行Snakemake时添加
--verbose或--printshellcmds参数,会实时输出每个作业的执行命令和状态变化,作业失败时会立即在控制台打印错误堆栈与退出原因。 - 通过SLURM作业ID单独查询:Snakemake提交作业时会在控制台输出作业ID(格式如
Submitted job 123456 to SLURM cluster),可直接用sacct -j <job_id>查询单个作业的详细状态:State字段为COMPLETED表示成功,FAILED/NODE_FAIL等表示失败,ExitCode字段会显示具体退出码。 - 自定义批量检查脚本:若需批量追踪所有作业,可编写简单shell脚本,从Snakemake运行日志中提取作业ID后批量查询状态,示例:
# 从Snakemake运行日志提取作业ID grep "Submitted job" snakemake_run.log | awk '{print $4}' > job_ids.txt # 循环查询每个作业状态 while read job_id; do sacct -n -j $job_id -o JobID,State,ExitCode done < job_ids.txt
内容的提问来源于stack exchange,提问作者jeje
相关产品推荐
相关产品推荐

