gpt4 book ai didi

regex - 使用脚本提取 Ubuntu 传感器命令

转载 作者:行者123 更新时间:2023-12-04 19:11:51 24 4
gpt4 key购买 nike

这个问题是 Extracting and Processing GPUTemperature Information Using Regexp 的延续

基本上,我想使用传感器命令和 gawk 和 bash 等脚本来提取 GPU 温度信息。

传感器输出示例如下:

amdgpu-pci-0c00
Adapter: PCI adapter
fan1: 1972 RPM
temp1: +50.0°C (crit = +0.0°C, hyst = +0.0°C)

amdgpu-pci-0600
Adapter: PCI adapter
fan1: 1960 RPM
temp1: +47.0°C (crit = +0.0°C, hyst = +0.0°C)

amdgpu-pci-0200
Adapter: PCI adapter
fan1: 1967 RPM
temp1: +52.0°C (crit = +0.0°C, hyst = +0.0°C)

pch_skylake-virtual-0
Adapter: Virtual device
temp1: +33.0°C

amdgpu-pci-0900
Adapter: PCI adapter
fan1: 1893 RPM
temp1: +51.0°C (crit = +0.0°C, hyst = +0.0°C)

amdgpu-pci-0300
Adapter: PCI adapter
fan1: 1992 RPM
temp1: +53.0°C (crit = +0.0°C, hyst = +0.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Package id 0: +24.0°C (high = +80.0°C, crit = +100.0°C)
Core 0: +23.0°C (high = +80.0°C, crit = +100.0°C)
Core 1: +21.0°C (high = +80.0°C, crit = +100.0°C)

我想根据总线 ID 的升序打印每个 GPU 的标签和温度。例如,根据前面的输出,第一个 GPU,GPU0,将是带有标签 amdgpu-pci-0200 的那个,GPU1 将是 amdgpu-pci-0300,直到最后一个 GPU4 是 amdgpu-pci-0c00。这不包括 coretemp-isa-0000,因为它不是 GPU。不管总线ID是连续的还是跳过的,我都想按升序标记它。

以下 bash 代码将在不正确排序的情况下提取所有 GPU 临时文件。
#!/bin/bash

while [ 1 ]
do
temp=( $( sensors | IFS=$'\n' gawk 'BEGIN{ RS="\n\n"} { if($0 ~ /amdgpu/) print $0 }' | gawk 'BEGIN{ FS="[+.]" } { if($1 ~ /temp1:/) print $2 }' ))
let j=0
for i in "${temp[@]}"
do
echo -en "GPU $j temp is $i \r "
j=$(($j +1))
sleep 1
done
done

我该如何解决?

问候

最佳答案

您没有提供实际的预期输出或提供有关如何解析输入的一些详细信息,所以这有点猜测,但它可能是您正在寻找的:

$ cat tst.sh
#!/bin/env bash

#while :
#do
cat file |
gawk '
BEGIN { RS="" }
$1 ~ /amdgpu/ {
temp = "N/A"
for (i=1; i<NF; i++) {
if ($i == "temp1:") {
temp = gensub(/^[^0-9]*([0-9]+).*/,"\\1",1,$(i+1))
}
}
temps[$1] = temp
}
END {
PROCINFO["sorted_in"] = "@ind_str_asc"
for (id in temps) {
print "GPU" (++cnt), id, temps[id]
}
}
'
#sleep 1
#done

$ ./tst.sh
GPU1 amdgpu-pci-0200 52
GPU2 amdgpu-pci-0300 53
GPU3 amdgpu-pci-0600 47
GPU4 amdgpu-pci-0900 51
GPU5 amdgpu-pci-0c00 50

只需更改 cat filesensors并取消注释这些行以激活无限循环(假设您有这样做的理由),当您对此感到满意时。

上面将 GNU awk 用于 gensub() 和 sorted_in。

关于regex - 使用脚本提取 Ubuntu 传感器命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52606325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com