Select 基于 sacct 数据的 slurm 作业

Select slurm jobs based on sacct data

在使用 slurm 的集群上,我试图创建一个在特定时间间隔内提交的作业列表,以便我可以取消它们。

手动我可以使用:

sacct --format="JobID,Submit"

这将给我一个列表 JobID 和相应的提交时间,格式为:

1919614      2019-04-02T19:31:30 
1919615      2019-04-02T19:31:32 
1919616      2019-04-02T19:31:33
1919686      2019-04-02T19:47:29 
1919687      2019-04-02T19:47:30 
1919688      2019-04-02T19:47:32 
1919689      2019-04-02T19:47:33 
1919690      2019-04-02T19:47:35 
1919691      2019-04-02T19:47:36

如何使用命令行 select 从第一列中获取 JobID,并在第二列中以特定时间间隔显示日期时间。

所以例如给定一个区间 {2019-04-02T19:47:30,2019-04-02T19:47:33} 它应该给出

1919687
1919688   
1919689

(或者是否有更好的方法来完全做到这一点。)


我添加了 awk 标签,因为可以在不提供任何关于字符串来源的背景信息的情况下提出这个问题。问题不仅仅是如果第二列是某个时间间隔内的日期,如何只打印第一列,这似乎应该可以使用 awk

(我认为添加背景信息很重要,以防有人使用不同的工具有更好的解决方案。参见 XY problem

您的日期时间已经是可订购的格式,因此您应该能够:

$ awk ' >= "2019-04-02T19:47:30" &&  <= "2019-04-02T19:47:33" { print  }' file
1919687
1919688
1919689

如果你想让它更通用一点:

$ start="2019-04-02T19:47:30"
$ end="2019-04-02T19:47:33"
$ awk -v start=$start -v end=$end ' >= start &&  <= end { print  }' file
1919687
1919688
1919689

不需要awk,Slurm's sacct can do the filtering for you:

sacct --state PD --starttime 019-04-02T19:47:30 --endtime 2019-04-02T19:47:33