如何找到完成的SLURM作业的“命令”(批处理脚本文件名)?

时间:2019-12-18 12:45:55

标签: slurm

我经常有很多从不同目录运行的SLURM作业。因此,查询作业的工作目录很有用。我可以对队列中的作业(例如,待处理,正在运行等)执行以下操作:

squeue -u $USER -o "%i %Z"

我可以为完成的工作(例如,完成,超时,取消等)执行以下操作:

sacct -u $USER -o JobID,WorkDir

问题是,有时我的目录中包含两个(或多个)SLURM批处理脚本,例如Submit.sh和restart.sh。因此,查询作业的“命令”,即批处理脚本的文件名也很有用。我可以为队列中的作业执行以下操作:

squeue -u $USER -o "%i %o"

但是,从检查sacct的文档并使用sacct开始,似乎没有sacct的等效选项,因此我目前无法获得完成作业的命令。我也不能对完成的作业使用squeue方法-只是说slurm_load_jobs error: Invalid job id specified,因为完成的作业不包含在squeue列表中。那么,如何找出完成的SLURM作业的命令(使用sacct或其他方式)?

1 个答案:

答案 0 :(得分:1)

Slurm确实没有将命令存储在计费数据库中。两种解决方法:

对于单个用户:提交后使用JobNameComment存储脚本名称。这些都存储在数据库中,但是这种方法容易出错;

集群方式:启用job completion plugin to ElastiSearch,因为它不仅存储脚本名称,还存储整个内容。