在使用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
如何使用命令行从第一列中的日期时间以一定间隔选择JobID。
因此,例如,给定间隔{2019-04-02T19:47:30,2019-04-02T19:47:33}
,则应给出
1919687
1919688
1919689
(或者是否有更好的方法可以完全做到这一点。)
我添加了awk标记,因为可以在不提供有关字符串起源的任何背景信息的情况下询问此问题。问题不只是简单的,如果第二列是某个时间间隔内的日期,那么似乎只打印第一列,这似乎应该可以使用awk
(我认为添加背景信息很重要,以防有人使用其他工具获得更好的解决方案。请参见XY problem)
答案 0 :(得分:2)
您的日期时间已经是可排序的格式,因此您应该能够:
$ awk '$2 >= "2019-04-02T19:47:30" && $2 <= "2019-04-02T19:47:33" { print $1 }' file
1919687
1919688
1919689
如果您想使其更通用一点:
$ start="2019-04-02T19:47:30"
$ end="2019-04-02T19:47:33"
$ awk -v start=$start -v end=$end '$2 >= start && $2 <= end { print $1 }' file
1919687
1919688
1919689
答案 1 :(得分:0)
不需要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