8 votes

Où puis-je trouver le fichier journal de la température de mon système ?

Alors, j'ai le paquet lm-sensors installé et je peux exécuter sensors et obtenir des détails sur la température de mon système, comme ceci :

acpitz-virtual-0
Adapter: périphérique virtuel
temp1 : +45.0°C (critique = +120.0°C)

k10temp-pci-00c3
Adaptateur : adaptateur PCI
temp1 : +46.5°C (élevé = +70.0°C)
(critique = +115.0°C, hyst = +115.0°C)

Ce que je voudrais faire, c'est pouvoir consulter un journal (disons, toutes les 5 minutes) de quelle est la température. Est-ce possible?

7voto

ankit7540 Points 4067

Voici ce que j'ai fait pour enregistrer les températures.

Prérequis : lm-sensors dateutils gnuplot (gnuplot pour la visualisation, pas nécessaire)

On peut installer ce qui précède en utilisant la commande suivante dans le terminal.

sudo apt install lm-sensors dateutils gnuplot

Passons au script principal :

#!/bin/bash 
# Enregistrer la température sur une certaine période de temps donnée en jours, heures, minutes ou secondes.
# entrer les variables selon votre utilisation dans la section suivante :
durée="$1"  #format de durée est  ndnhnmns où n est un nombre et d est jour,
# h est heures, m est minutes et s est secondes. Par exemple, 4d , 4d5h30m , 5m30s, 6h30m30s sont toutes valides.

pas="$2"
#----------------------------------------------------------------------
#temps de départ pris comme actuel
dt=$(date '+%Y-%m-%dT%H:%M:%S');
#et=$(date '+%Y-%m-%dT%H:%M:%S');

#----------------------------------------------------------------------
a=$(dateutils.dadd $dt  $durée )
b=$(dateutils.ddiff $dt $a -f '%S')
echo $a $b

ntemps=$((b/pas))
echo $ntemps

echo "enregistrement...";
rm t_log.txt
nms=0
while [  $nms -lt $ntemps ];  do
        sensors | grep -A 0  'Core' | cut -c18-21 |tr "\n" "\t" >> temp.txt
        let nms=nms+1
        sleep  $pas
        now=$(date +"%m/%d/%Y %T")
#       echo $now
        echo -e "$(cat temp.txt)""\t$now"  >> t_log.txt
        rm temp.txt
done

#tracé en utilisant gnuplot pour obtenir un joli graphique. 
jour=86400 #axe des x différent pour différentes durées. Un jour = 86400 secondes

fcode=$(date "+%Y-%m-%d_%H%M%S") # générer un horodatage 
#echo $fcode
if [[ "$b" > "$jour" ]]
then
        gnuplot -e "filename='temp_plot_$fcode'" plot_day
else
        gnuplot -e "filename='temp_plot_$fcode'" plot_time
fi
#fin-du-script---------------------------------------------------------

La commande gnuplot à la fin nécessite deux fichiers supplémentaires, les voici.

fichier : plot_day

set terminal pngcairo size 1200,600 enhanced font 'Verdana'
set output sprintf('%s.png', filename)
set timefmt '%d/%m/%Y %H:%M:%S'
set xdata time
set format x '%m/%d'
set grid ytics lc rgb "#bbbbbb" lw 2 lt 1
set yr [20:100]
set title "Journal de température"
set xlabel "Date (mois:jour)"
set ylabel "degré Celsius"

plot "t_log.txt" using 7:1 with lines title "core:1" linewidth 3,\
     "t_log.txt" using 7:2 with lines title "core:2" linewidth 3 ,\
     "t_log.txt" using 7:3 with lines title "core:3" linewidth 3 ,\
     "t_log.txt" using 7:4 with lines title "core:4" linewidth 3 ,\
     "t_log.txt" using 7:5 with lines title "core:5" linewidth 3 ,\
     "t_log.txt" using 7:6 with lines title "core:6" linewidth 3
replot

fichier : plot_time

set terminal pngcairo size 1200,600 enhanced font 'Verdana'
set output sprintf('%s.png', filename)
set timefmt '%d/%m/%Y %H:%M:%S'
set xdata time
set format x '%H:%M:%S'
set grid ytics lc rgb "#bbbbbb" lw 2 lt 1
set yr [20:100]
set title "Journal de température"
set xlabel "Temps (Heure:Minute:Seconde) "
set ylabel "degré Celsius"
plot "t_log.txt" using 7:1 with lines title "core:1" linewidth 3,\
     "t_log.txt" using 7:2 with lines title "core:2" linewidth 3 ,\
     "t_log.txt" using 7:3 with lines title "core:3" linewidth 3 ,\
     "t_log.txt" using 7:4 with lines title "core:4" linewidth 3 ,\
     "t_log.txt" using 7:5 with lines title "core:5" linewidth 3 ,\
     "t_log.txt" using 7:6 with lines title "core:6" linewidth 3 
replot

Exécution du script Enregistrez-le, rendez-le exécutable et exécutez-le comme suit,

./script_name $nd$nh$nm$ns m

n est un nombre quelconque, tandis que d=jours, h=heures, m=minutes, s=secondes

m taille du pas de mesure en secondes. La mesure sera prise après un intervalle de m secondes

Exemple d'utilisation.

./log_script.sh  3d12h 30

(explication : journal pour 3 jours 12 heures avec une mesure toutes les 30 secondes)

./log_script.sh  12m30s 10

./log_script.sh  45m 2

./log_script.sh  55s 1

{Il peut être utilisé avec cron pour des journaux réguliers. J'utilise ce script uniquement lors de tests de performances et/ou d'overclocking.}


Sortie

Ce script génère un fichier journal sous le nom t_log.txt qui contient la température des cœurs du CPU. (Pour un système avec des cœurs différents, il y aura une petite différence. Modifiez la ligne dans les fichiers script gnuplot qui sont plot_time et plot_day spécifiquement, "t_log.txt" using derniere_colonne:colonne_pour_chaque_coeur with lines title "core:6" linewidth 3).

La sortie dans t_log.txt ressemble à ce qui suit, (puisque c'est une machine à six coeurs, il y a donc 6 colonnes de températures.)

28.0    28.0    27.0    27.0    27.0    27.0            12/18/2016 00:50:21
28.0    26.0    27.0    26.0    27.0    27.0            12/18/2016 00:50:23
27.0    27.0    26.0    26.0    27.0    26.0            12/18/2016 00:50:25
28.0    27.0    29.0    26.0    27.0    26.0            12/18/2016 00:50:27
26.0    27.0    26.0    28.0    27.0    26.0            12/18/2016 00:50:29
27.0    26.0    28.0    26.0    27.0    26.0            12/18/2016 00:50:31
27.0    26.0    26.0    26.0    27.0    26.0            12/18/2016 00:50:33
27.0    27.0    28.0    28.0    27.0    27.0            12/18/2016 00:50:35

Et le graphique généré ressemble à ce qui suit :

Graphique généré par gnuplot

Le script peut générer de tels graphiques pour des journaux très longs ou de nombreux autres paramètres. Il est également possible de tracer entre les enregistrements, ce qui nécessite simplement une modification du script. Le script peut être grandement amélioré et l'enregistrement de plusieurs autres paramètres tels que l'utilisation de la RAM, la charge du CPU, l'activité du disque dur peut être ajouté. Profitez-en !

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X