【发布时间】:2022-01-26 14:57:03
【问题描述】:
我正在寻找解决我面临的问题的建议。为了提供背景信息,我正在尝试开发一种工具来监控我们内部的 HPC 集群。由于我们使用slurm 工作负载调度,因此我使用了它们提供的命令。
我正在运行以下命令:
squeue -h -t R -O Partition,NumCPUs,tres-per-node 用于告诉分配给作业的分区 CPU 和 GPU 等资源。但是,我们拥有的分区名称很长,这导致列输出被视为一个值。
输出:
gpu-2080ti-interacti8 gpu:1
gpu-2080ti-interacti8 gpu:1
gpu-2080ti-interacti8 gpu:1
gpu-2080ti-interacti8 gpu:1
gpu-2080ti-interacti8 gpu:1
gpu-2080ti-interacti8 gpu:1
gpu-2080ti-interacti8 gpu:1
gpu-2080ti-interacti8 gpu:1
gpu-2080ti-long 32 gpu:4
gpu-2080ti-long 16 gpu:2
gpu-v100 4 gpu:1
如果我在上述命令上运行 awk,因为 squeue -h -t R -O Partition,NumCPUs,tres-per-node| awk "{print \$1,\$2,\$3}" 会出现问题,因为 gpu-2080ti-interacti8 被视为一个值,而不是应该是 gpu-2080ti-interacti 8。我已经用 --format 查找了 -o 但这对我不起作用,因为tres-per-node 在squeue 提供的 % 选项中不存在。我正在寻找一种可以帮助我区分这些值的解决方案。
【问题讨论】:
-
你不能使用
awk的NF(字段数)常量吗? -
也许您可以在
squeue的-O, --Format=<output_format>选项参数中使用带或后缀规范的最小字段