CPU Temp sous Linux

Mesure de la température CPU

Pour obtenir la température des composants de la carte mère, plusieurs options sont possibles :

Avec  lm_sensors

dnf install lm_sensors
sensors

La commande sensors va afficher quelques chose comme ceci :

k10temp-pci-00c3
Adapter: PCI adapter
temp1: +29.0°C (high = +70.0°C)
(crit = +90.0°C, hyst = +88.0°C)

nouveau-pci-0100
Adapter: PCI adapter
temp1: +75.0°C (high = +95.0°C, hyst = +3.0°C)
(crit = +125.0°C, hyst = +2.0°C)
(emerg = +135.0°C, hyst = +5.0°C)

atk0110-acpi-0
Adapter: ACPI interface
Vcore Voltage: 1.09 V (min = +0.85 V, max = +1.70 V)
+3.3 Voltage: 3.51 V (min = +2.97 V, max = +3.63 V)
+5 Voltage: 5.08 V (min = +4.50 V, max = +5.50 V)
+12 Voltage: 12.58 V (min = +10.20 V, max = +13.80 V)
CPU FAN Speed: 3245 RPM (min = 600 RPM, max = 7200 RPM)
CHASSIS FAN Speed: 0 RPM (min = 600 RPM, max = 7200 RPM)
CHASSIS FAN 2 Speed: 0 RPM (min = 600 RPM, max = 7200 RPM)
CPU Temperature: +38.0°C (high = +60.0°C, crit = +95.0°C)
MB Temperature: +39.0°C (high = +45.0°C, crit = +75.0°C)

Ou en python , avec la bibliothèque PySensors qui s’installe ainsi :

pip install PySensors

En utilisation basique :
#!/usr/bin/python3
#pip install PySensors
import sensors
sensors.init()
try:
   for chip in sensors.iter_detected_chips():
   print ('%s at %s' % (chip, chip.adapter_name))
   for feature in chip:
      print (' %s: %.2f' % (feature.label, feature.get_value()))
finally:
   sensors.cleanup()

Ce script fournira ce type d’informations :

k10temp-pci-00c3 at PCI adapter
  temp1: 28.50
nouveau-pci-0100 at PCI adapter
  temp1: 75.00
atk0110-acpi-0 at ACPI interface
  Vcore Voltage: 1.09
   +3.3 Voltage: 3.51
   +5 Voltage: 5.08
   +12 Voltage: 12.58
  CPU FAN Speed: 3229.00
  CHASSIS FAN Speed: 0.00
  CHASSIS FAN 2 Speed: 0.00
  CPU Temperature: 38.00
  MB Temperature: 39.00

Exemple, ne fournissant qu’une température moyenne :

Parce que selon la langue installée sur votre OS, vous aurez en sortie des “temp” ou des “therm”, et que la bibliohtèque fournira une température par “core”, voici un petit code qui se contente d’afficher une valeur moyenne :

#!/usr/bin/python3
#pip install PySensors
import sensors

sensors.init()
v=0.00
n=0
try:
    for chip in sensors.iter_detected_chips():
         for feature in chip:
             if (("temp" in str(feature.label).lower()) or ("therm" in str(feature.label).lower()) or ("core" in str(feature.label).lower())  or ("cpu" in str(feature.label).lower())):
                 if not ("speed" in str(feature.label).lower()) and  not ("volt" in str(feature.label).lower()):
                     n=n+1
                     v=v+feature.get_value()
finally:
    sensors.cleanup()
if (n>0):
    print("%s : %.2f" % ("Temp moyenne",v/n))
    print("%s : %d" % ("Nombre de valeurs",n))

Ce dernier affiche :

Temp moyenne : 38.00
Nombre de valeurs : 1