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