Estou usando isso para mostrar a temperatura da minha CPU.

echo Temperatura da CPU >> /home/andy/bin/HD_AND_CPU_TEMPS.txt

sensors -f | grep "temp1" >> /home/andy/bin/HD_AND_CPU_TEMPS.txt
geany /home/andy/bin/HD_AND_CPU_TEMPS.txt

O Radeon é minha CPU gráfica.

radeon-pci-0008
Adapter: PCI adapter
temp1:       +115.1°F  (crit = +248.0°F, hyst = +213.6°F)

k10temp-pci-00c3
Adapter: PCI adapter
temp1:        +82.4°F  (high = +158.0°F)
                       (crit = +169.5°F, hyst = +168.3°F)

Quero que o arquivo mostre apenas a segunda temperatura.

Mas existem dois temp1s?

Como pode mostrar apenas a 2ª temperatura?

Responder1

O código a seguir imprime a temp1linha somente se ela seguir uma linha contendo k10temp-pci-00c3:

$ sensors -f | awk '/k10temp-pci-00c3/{f=1} f && /temp1/{print; f=0}'
temp1:        +82.4°F  (high = +158.0°F)

Se você também quiser o título:

$ cat sensors-f | awk 'BEGIN{print"CPU Temperature"} /k10temp-pci-00c3/{f=1} f && /temp1/{print; f=0}'
CPU Temperature
temp1:        +82.4°F  (high = +158.0°F)

Como funciona

  • BEGIN{print"CPU Temperature"}imprime o título.

  • /k10temp-pci-00c3/{f=1}define a variável awk fcomo 1 (true) quando uma linha contendo k10temp-pci-00c3é encontrada.

  • f && /temp1/{print; f=0}imprimirá uma linha se ffor verdadeiro e a linha contiver temp1. Isso também fretorna a zero (falso).

Alternativa: usando sed

$ sensors -f | sed -n '/k10temp-pci-00c3/,/temp1/{/temp1/p}'
temp1:        +82.4°F  (high = +158.0°F)

Responder2

você pode passar o nome do chip como argumento sensors k10temp-pci-00c3para deixarsensoreso software lê apenas este sensor específico.

$ sensors k10temp-pci-00c3
Adapter: PCI adapter
temp1:        +82.4°F  (high = +158.0°F)
              (crit = +169.5°F, hyst = +168.3°F)

Isso resultará em uma leitura mais rápida em comparação com a leitura de todos os sensores disponíveis e, em seguida, limitando a saída.

E então você gostaria de obter apenas a linha temp1, a maneira mais simples é usar grep

$ sensors k10temp-pci-00c3 | grep temp1
temp1:        +82.4°F  (high = +158.0°F)

Para obter apenas a temperatura: Use awk para tratar essa linha como coluna e obter a segunda coluna

$ sensors k10temp-pci-00c3 | grep temp1 | awk '{print $2}'
+82.4°F

Acredito que esse método funciona mais rápido e usa menos poder de processamento.

Para outras pessoas com máquinas diferentes, a saída do sensor pode ser diferente, altere o que grep de acordo. Na minha máquina, a etiqueta do sensor é Tdieem vez detemp1

informação relacionada