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 temp1
lí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 awkf
en 1 (verdadero) cuandok10temp-pci-00c3
se encuentra una línea que contiene.f && /temp1/{print; f=0}
imprimirá una línea sif
es verdadero y la línea contienetemp1
. Esto también vuelvef
a 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-00c3
para 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á Tdie
en lugar detemp1