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

如何在SLURM作业完成后将seff展示的资源使用情况记录到文件?

在SLURM作业完成后记录seff资源使用情况的方法

以下几种方案可以帮你把seff的输出保存到文件,避免被系统清理:

方案1:作业脚本内自动记录(最常用)

直接在你的SLURM作业脚本里添加逻辑,让作业结束后自动调用seff并写入文件。如果想确保异常终止也能记录,用trap捕捉退出信号更稳妥。

基本版本(仅正常结束时记录)

#!/bin/bash
#SBATCH --job-name=my_job
#SBATCH --output=job_%j.out
#SBATCH --error=job_%j.err

# 这里放你的实际作业命令
echo "Running job..."
sleep 60

# 作业完成后记录seff结果
seff $SLURM_JOB_ID >> job_${SLURM_JOB_ID}_seff.log

增强版本(异常终止也记录)

#!/bin/bash
#SBATCH --job-name=my_job
#SBATCH --output=job_%j.out
#SBATCH --error=job_%j.err

# 定义记录函数
save_seff() {
    seff $SLURM_JOB_ID >> job_${SLURM_JOB_ID}_seff.log
}

# 捕捉EXIT信号,不管作业是正常完成还是中途失败,都会执行记录
trap save_seff EXIT

# 你的作业命令
echo "Running job..."
sleep 60

执行后会生成以作业ID命名的seff日志文件,比如job_12345_seff.log。

方案2:将seff结果追加到作业日志

如果不想单独生成文件,也可以把seff的输出直接追加到作业的标准输出或错误日志里:

# 追加到标准输出日志(对应--output参数的文件)
seff $SLURM_JOB_ID >> $SLURM_OUTPUT

# 或者追加到标准错误日志(对应--error参数的文件)
seff $SLURM_JOB_ID >> $SLURM_ERROR

方案3:用sacct替代(应对seff无法调用的情况)

如果作业被系统清理后seff无法获取信息,可以用sacct命令提取资源数据,它的历史保留时间通常更长,输出格式也更规整:

sacct -j $SLURM_JOB_ID --format=JobID,JobName,Elapsed,AllocCPUs,CPUTime,MaxRSS,MaxVMSize >> job_${SLURM_JOB_ID}_resource.log

这个命令会提取作业的核心资源使用信息,和seff的内容基本一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 00:49:55