如何查看Slurm中提交作业的原始命令脚本文件
查看Slurm提交的原始作业脚本(即使原脚本已删除/修改)
嗨,我之前也碰到过一模一样的情况——提交完作业后不小心删了原脚本,或者后来改了脚本但想调回当初提交的版本。其实不用慌,Slurm本身就有办法直接调出提交时的原始脚本内容,完全不依赖本地的脚本文件。
核心方法:使用sacct命令查看JobScript字段
Slurm会把你提交的原始作业脚本内容记录在集群的作业会计数据里,你可以通过sacct命令的JobScript字段直接提取出来,不管原脚本是否存在或被修改。
具体命令格式如下:
sacct -j <你的作业ID> --format=JobScript
比如你的作业ID是12345,运行:
sacct -j 12345 --format=JobScript
终端就会直接输出你当初提交的完整脚本内容,包括所有的#SBATCH指令和脚本里的代码。
优化输出体验
如果脚本内容很长,直接在终端显示可能会杂乱,你可以把输出导出到一个文件里保存:
sacct -j <你的作业ID> --format=JobScript --parsable2 > original_job_script.sh
--parsable2参数会让输出格式更规整,避免多余的换行或分隔符干扰。
为什么不用scontrol show job?
你提到的scontrol show job <jobId>只能看到脚本的路径,但如果原脚本被删除或修改,这个路径指向的文件已经不是提交时的版本了。而sacct的JobScript字段是Slurm在你提交作业时就保存下来的原始内容,完全不受本地文件变化的影响。
注意事项
少数集群可能因为Slurm配置限制,没有开启JobScript字段的记录功能。如果遇到这种情况,你可以联系集群管理员,询问是否能从Slurm的spool目录(通常只有管理员有权限访问)中提取原始脚本,但这种情况比较少见。
内容的提问来源于stack exchange,提问作者Oren
相关产品推荐
相关产品推荐

