Wo finde ich die Protokolldatei meiner Systemtemperatur?

7

Ich habe also das lm-sensorsPaket installiert und kann Folgendes ausführen sensorsund Details zu meiner Systemtemperatur abrufen:

acpitz-virtual-0
Adapter: Virtual device
temp1:        +45.0°C  (crit = +120.0°C)

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

Was ich tun möchte, ist in der Lage zu sein, ein Protokoll (etwa alle 5 Minuten) der Temperatur anzuzeigen. Ist das möglich?

jrg
quelle
1
Hast du Sensord installiert? packages.ubuntu.com/precise/sensord manpages.ubuntu.com/manpages/hardy/man8/sensord.8.html und möchten Sie Ihre Protokolle oder ein grafisches Frontend überprüfen?
Panther
@ bodhi.zazen Sensord nicht installiert, und es ist mir egal. Würde es vorziehen, meine Protokolle zu überprüfen.
jrg
Mit dem, wonach Sie fragen, würde ich, sofern nicht jemand eine bessere Antwort hat, ein Skript schreiben und die Ausgabe (mit einem Zeitstempel) an ein benutzerdefiniertes Protokoll senden und es mit cron ausführen.
Panther
Nun, ich bin nicht über die Installation von Sensord hinaus, es sieht ziemlich cool aus.
jrg

Antworten:

6

Hier ist, was ich getan habe, um Temps zu protokollieren.

Voraussetzungen: lm-sensors dateutils gnuplot( gnuplotzur Visualisierung nicht erforderlich)

Sie können das oben genannte mit dem folgenden Befehl im Terminal installieren.

sudo apt install lm-sensors dateutils gnuplot

Kommen wir zum Hauptskript:

#!/bin/bash 
# Log temperature over some time  interval given as days, hours, minutes or seconds.
# enter the variables according to your usage in the following seciton :
duration="$1"  #duration format is  ndnhnmns where n is some number and d is day,
# h is hours, m is minutes and s is seconds. For example, 4d , 4d5h30m , 5m30s, 6h30m30s are all valid.

step="$2"
#----------------------------------------------------------------------
#starting time taken as current
dt=$(date '+%Y-%m-%dT%H:%M:%S');
#et=$(date '+%Y-%m-%dT%H:%M:%S');

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

ntimes=$((b/step))
echo $ntimes


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


#plotting using gnuplot to get a beautiful plot. 
day=86400 #different x-axis for different  time duration. A day = 86400 seconds

fcode=$(date "+%Y-%m-%d_%H%M%S") # generate a time stamp 
#echo $fcode
if [[ "$b" > "$day" ]]
then
        gnuplot -e "filename='temp_plot_$fcode'" plot_day
else
        gnuplot -e "filename='temp_plot_$fcode'" plot_time
fi
#end-of-script---------------------------------------------------------

Der gnuplotBefehl am Ende benötigt zwei weitere Dateien, die folgen.

Datei : 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 "Temperature log"
set xlabel "Date (month:day)"
set ylabel "degree Celcius"

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

Datei: 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 "Temperature log"
set xlabel "Time (Hour:Minute:Second) "
set ylabel "degree Celcius"
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

Ausführen des Skripts Speichern Sie es, machen Sie es ausführbar und führen Sie es aus als:

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

n ist eine Zahl, während d = Tage, h = Stunden, m = Minuten, s = Sekunden

mSchrittweite der Messung in Sekunden. Die Messung erfolgt nach mSekundenintervallen

Anwendungsbeispiel.

./log_script.sh  3d12h 30

(Erklärung: Protokoll für 3 Tage 12 Stunden mit Messung alle 30 Sekunden)

./log_script.sh  12m30s 10

./log_script.sh  45m 2

./log_script.sh  55s 1

{Es kann cronfür reguläre Protokolle verwendet werden. Ich verwende dieses Skript nur beim Benchmarking und / oder Übertakten.}


Ausgabe

Dieses Skript generiert eine Protokolldatei, t_log.txtdie die Temperatur der CPU-Kerne enthält. (Für System mit verschiedenen Kernen gibt es eine kleine Änderung sein. Bearbeiten Sie die Zeile in gnuplot Skript - Dateien , die sind plot_timeund plot_dayinsbesondere "t_log.txt" using last_column:column_for_each_core with lines title "core:6" linewidth 3).

Die Ausgabe in t_log.txt sieht wie folgt aus (da dies eine Sechs-Kern-Maschine ist, also 6 Spalten mit Temps.)

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

Und die erzeugte Handlung sieht wie folgt aus:

Plot aus Gnuplot generiert

Das Skript kann solche Diagramme für sehr lange Protokolle oder viele andere Parameter generieren. Es ist auch möglich, zwischen den Protokollierungen zu zeichnen, für die lediglich eine Änderung des Skripts erforderlich ist. Das Skript kann erheblich verbessert und die Protokollierung mehrerer anderer Parameter wie RAM-Auslastung, CPU-Auslastung und Festplattenaktivität hinzugefügt werden. Genießen !

ankit7540
quelle