этот вопрос является продолжением Извлечение и обработка информации о температуре GPUT с использованием Regexp
В основном я хочу извлечь информацию о температуре графических процессоров с помощью команды датчиков и сценариев, таких как gawk и bash.
Пример вывода датчиков будет выглядеть следующим образом:
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)
Я хочу напечатать каждый графический процессор с его меткой и температурой, основываясь на возрастающем порядке идентификатора шины.Например, на основании предыдущего вывода первый GPU, GPU0, будет с меткой amdgpu-pci-0200, GPU1 будет amdgpu-pci-0300, пока последний GPU4 не будет amdgpu-pci-0c00.Это исключает coretemp-isa-0000, так как это не графический процессор.Независимо от того, является ли идентификатор шины последовательным или пропущенным, я хочу пометить его в порядке возрастания.
Следующий bash-код извлечет все временные значения графического процессора без правильной сортировки.
#!/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
Как мне разобраться?
касательно