CPU Auslastung durch Prozess protokollieren

Hinweis: In dem Thema CPU Auslastung durch Prozess protokollieren gibt es 10 Antworten auf 2 Seiten. Der letzte Beitrag () befindet sich auf der letzten Seite.
  • Guten Tag,


    Ich suche ein Tool, das mir ermöglicht die CPU Auslastung 7 Tage die Woche 24 Stunden zu protokollieren. Ich möchte sehen, wann (Datum + Uhrzeit + Dauer der Auslastung) und welcher Prozess wieviel CPU Leistung frisst. Wer kann mir da weiterhelfen? Ich hab mich da schon bissel informiert, aber Tools wie Munin oder Nagios sind mir viel zu komplitziert zum Einrichten. Da komme ich einfach nicht weiter.


    Gruss
    Peter

    Für den Inhalt des Beitrages 57235 haftet ausdrücklich der jeweilige Autor: cordial

  • Code
    top -b -d10 -n60480 >top.log


    Schreibt eine Woche lang (also 60480 mal) alle 10 Seks einen Eintrag in die Datei "top.log"

    Für den Inhalt des Beitrages 57310 haftet ausdrücklich der jeweilige Autor: Easy

  • Hallo,


    Zitat


    welcher Prozess wieviel CPU Leistung


    ...also Du meinst ja sicher nicht jeder Prozess... und zu jeder Zeit? Das gäbe eine immense Menge von Daten.


    Also was genau willst Du protokollieren?


    Gruss,
    Roland

    Für den Inhalt des Beitrages 57311 haftet ausdrücklich der jeweilige Autor: rme

  • Hi,


    Also ich habe gestern und heute noch etwas gesucht und folgendes gefunden:


    top -b | grep "Prozessname" > log.log


    1040 root 20 0 33140 13m 4088 S 0.3 1.4 7:23.88 "Prozessname"


    Eigentlich passt dieser Befehl, denn es wird nur protokolliert, wenn der Prozess eine CPU Auslastung hat. Nur fehlt mir in jeder Zeile Datum + Uhrzeit, die er ausspuckt. Kann mir jemand da noch helfen? Hab es mit dem Befehl "TS" für Timestamp versucht, aber diesen gibt es bei Suse nicht?

    Für den Inhalt des Beitrages 57313 haftet ausdrücklich der jeweilige Autor: cordial

  • Eine klapprige Idee dazu von mit:


    Ein Prozess füllt eine FIFO mit den Zeitstempeln
    Ein zweiter füllt einen andere FIFO mit den top Daten.


    Und dann führt man sie zusammen.


    Ich hab das mal quick&verydirty zusammengehackt.
    Du kannst es dir von hier http://osf.openmafia.org/topdate einfach runterladen.
    Es ist extensiv kommentiert und sollte für jeden verständlich sein.


    Beachte, dass das Script nach Erreichen der Laufdauer noch einige Zeit braucht, bis die beiden FIFOs
    gelesen und die Daten zusammengeführt sind.


    Editiere den Anfang des Scripts nach Gusto.
    Also die Sachen, wie lange es laufen soll, welche Dateinamen, welcher Prozess gegrept werden soll.
    Und achte vor allem darauf, dass dein "top -b | grep ..." GENAU eine Zeile zurückgibt.
    Also in Zeile 19 "watch_name" entweder eindeutig definieren, oder in Zeile 77 den Ausdruck ".... | grep $watch_name..."
    entsprechend anpassen.


    Das Ding läuft von den Zeitstempeln her etwas asynchron, was aber für deine Zwecke nicht weiter stören sollte.

    3 Mal editiert, zuletzt von uhelp ()

    Für den Inhalt des Beitrages 57319 haftet ausdrücklich der jeweilige Autor: uhelp

  • Wickel einfach ein Schleifchen drumrum und dann ist das gut:

    Code
    while :;do echo $(date): $(top -b -n1 | grep "Prozessname");done >top.log

    Für den Inhalt des Beitrages 57324 haftet ausdrücklich der jeweilige Autor: Easy

  • Nicht schlecht.
    Gefällt mir gut.

    Für den Inhalt des Beitrages 57325 haftet ausdrücklich der jeweilige Autor: uhelp

  • Hi,


    Danke für die Antworten.


    Das Script von Easy ist schon ganz gut. Wie kann ich es nun realisieren, dass er mir jeden Tag von Montag - Freitag zwischen 6 Uhr - 18 Uhr eine neue Log Datei mit Datum erstellt?

    Einmal editiert, zuletzt von cordial ()

    Für den Inhalt des Beitrages 57330 haftet ausdrücklich der jeweilige Autor: cordial

  • Ok, habe eine Textdatei angelegt:


    * 6-18 * * 1-5 /downloads/bash.sh
    bash.sh = Script vom Easy


    Könnte jetzt den Cronjob erstellen, aber wie sage ich ihm nun, dass er jeden Tag eine neue Top_(+datum).log erstellt?

    Für den Inhalt des Beitrages 57332 haftet ausdrücklich der jeweilige Autor: cordial

  • Ich gehe davon aus, dass Du Deinen Rechner nicht nonstop laufen lässt, denn eine Endlosschleife regelmäßig per Cronjob zu starten, ist sonst mal keine gute Idee! Ich hoffe auch, dass Du die Tücken der Variable PATH in Cronjobs kennst...

    Code
    ... >Top_$(date +%d.%m.%Y).log


    Das ergibt das deutsche Datumsformat. Zum ändern sollte Dir jetzt ein beherztes:

    Code
    man date

    ausreichen.

    Für den Inhalt des Beitrages 57338 haftet ausdrücklich der jeweilige Autor: Easy