linux - 根据 sacct 数据选择 slurm 作业

标签 linux awk hpc slurm

在使用 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 )

最佳答案

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

$ 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

关于linux - 根据 sacct 数据选择 slurm 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55512844/

相关文章:

C# 属性系统

linux - 如何监视文件以找出将来哪个进程将写入或删除它

c - 如何使用 2 个应用程序同时连接两个智能卡读卡器

linux - bash 脚本的复杂操作

linux - 使用 AWK 比较两个不同的文件并将值从一个文件复制到另一个文件

c - c中的mpi如何扩展MPI_Type_create_subarray的使用?

linux - 在 Makefile 中显示符合特定条件的行

awk 选择带有变量的行,无法打开没有这样的文件

regex - 如何在 shell 文件 (.sh) 中使用正则表达式来捕获 '\' 和换行符 (linefeed)?

environment-variables - 在 Julia 中设置整个进程的环境变量