Estoy usando esto para mostrar la temperatura de mi CPU.

eco Temperatura de la 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

El radeon es mi 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)

Quiero que el archivo solo muestre la segunda temperatura.

¿Pero hay dos temp1?

¿Cómo se puede mostrar solo la segunda temperatura?

Respuesta1

El siguiente código imprime la temp1línea solo si sigue a una línea que contiene k10temp-pci-00c3:

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

Si también quieres el encabezado:

$ 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)

Cómo funciona

  • BEGIN{print"CPU Temperature"}imprime el encabezado.

  • /k10temp-pci-00c3/{f=1}establece la variable awk fen 1 (verdadero) cuando k10temp-pci-00c3se encuentra una línea que contiene.

  • f && /temp1/{print; f=0}imprimirá una línea si fes verdadero y la línea contiene temp1. Esto también vuelve fa cero (falso).

Alternativa: usar sed

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

Respuesta2

puedes pasar el nombre del chip como argumento sensors k10temp-pci-00c3para permitirsensoresEl software solo lee 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)

Esto dará como resultado una lectura más rápida en comparación con leer todos los sensores disponibles y luego limitar la salida.

Y luego querrás obtener solo la línea temp1, la forma más sencilla es usar grep

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

Para obtener solo la temperatura: use awk para tratar esa línea como una columna y obtener la segunda columna

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

Creo que este método funciona más rápido y utiliza menos potencia de procesamiento.

Para otras personas con máquinas diferentes, la salida del sensor podría ser diferente, cambie lo que se debe grep en consecuencia. En mi máquina la etiqueta del sensor está Tdieen lugar detemp1

información relacionada