Mein erstes kombiniertes Script ist nun fertig :)

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
cartun
Beiträge: 234
Registriert: 19.06.2010 11:55:45
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Mein erstes kombiniertes Script ist nun fertig :)

Beitrag von cartun » 13.08.2010 18:17:51

Hello@all,

seit 8 Wochen bin ich Debianer und habe nun meine eigene Idee umsetzen können :D
Alles fing an als von der Anwendung 'sensors' hörte, mir war es immer (auch früher unter Windows) wichtig mal die CPU Temperatur zu kontrollieren, gerade im Hochsommer.
Ich habe nun die Informationen die 'sensors' liefert nach meinen Wünschen weiter verarbeitet, dazu nutze ich cronjobs und bash-Werkzeuge.

Ich habe mir mehrere Ziele gesetzt:
->zu jeder vollen Stunde sollen die Temperaturen (DualCore) pro Minute ausgelesen werden und in eine Datei geleitet werden
-> zeitgleich wollte ich auch die Anzahl der Prozesse auslesen und speichern
-> alles Visuell mit GnuPlot darstellen

Als erstes habe ich mir einen Cronjob gebaut der auch innerhalb einer Stunde gestartet werden kann aber erst am Anfang einer Stunde wiederum ein Cronjob startet der das Hauptscript jede Minute ausführt .

Also ein Cronjob prüft auf eine volle Stunde und ruft dann ein zweiten Job ins leben der mein Hauptscript jede Minute ausführt.

Das besagte Script prüft dann wann die Stunde zu ende ist und liest dann keine Daten mehr ein und schreibt auch keine mehr in die Datei.
Solange sich das Script in den Bereich von Minute 0 - 59 bewegt Arbeit es auch, danach löscht es alle jobs und beendet sich und damit auch die Arbeit.

Wem es Interessiert hier mal der Code des Hauptscriptes:

Code: Alles auswählen

#/bin/bash
#sensors auslesen, Zeitangabe anhängen und in einer Variable ablegen. Zuletzt werden noch die Anzahl der Prozesse ausgelesen.
if [ $(date +%M) -eq 59 ];
then
 crontab -r 
else
 VARTEMP=$(sensors | grep :..\+[0-9][0-9]\.[0-9]| cut -d\+ -f2 | cut -c1-4; echo $(date +%M); echo $(ps -A | wc -l)) 
 echo $VARTEMP >> /home/dennis/cputemp/database
 unset VARTEMP
fi
Da ich später alles in GnuPlot Visualisieren wollte musste die Datei in der geschrieben wird am Ende ein bestimmtes Format einhalten.

y y1 x y2
GradCPU0 GradCPU1 Zeit Prozesse

Das konnte ich nur erreichen (mir fehlt noch das Wissen es anders umzusetzen) indem ich die Ausgabe meines Filters erst in eine Variable gespeichert habe. Erst dann standen alle Daten in einer Zeile & vier Spalten die dann in eine Datei geschrieben wurden.

Jetzt hatte ich das richtige Format und konnte GnuPlot mit den Daten füttern :)
Hier mal das Ergebnis:

Bild

Ich finde es fantastisch was man mit dem "Schweizer-Taschenmesser" Linux alles anfangen kann...

Ich freue mich auf jeden Kommentar und auf Tipps die mein Script/Probleme betreffen!

Antworten