CPU-Last eines Prozesses monitoren

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo Forum :)

    Eine Frage: Ich will die CPU-Last eines laufenden Prozesses alle 30 Sekunden in eine Textdatei schreiben (um sie später auszulesen und grafisch darzustellen).

    Das Skript sollte nicht das Problem sein, ich will nur die "Zahl" extrahieren, also die Prozentangabe der CPU-Last.

    Bisher versuche ich mich mit so Dingen wie

    ps aux | grep prozess | cut ... | .....

    Wird bei mir aber Mega-Umständlich und klappt bisher nicht.

    Der Prozess hat etwa 21% und ich will nach der Zeile nur noch die "21" in die Datei schreiben.

    Kann mir jemand fix die Lösung sagen?

    :danke_ATDE:
    PS: Ja, ich hab hier auch schon gesucht und nichts gefunden obwohl es sicher irgendwo zu finden ist. Aber wieviel Stunden muss man gesucht haben bevor die (erneute?) Nachfrage gerechtfertigt ist? :)

  • Ich hab mal bash als Prozess genommen, dann sieht das so aus:

    Code
    ps aux | awk '/bash/ { print $3; }' >> logfile

    Wahrscheinlich ist es gescheit, noch einen Timestamp dazu zu setzen:

    Code
    ps aux | awk '/bash/ { print strftime("%H:%M:%S") " " $3; }' >> logfile

    Ich hab gerade keinen laufenden PI und der Version von awk auf dem
    PI fehlen anscheinend ein paar Funktionen. Auf einem normalen
    Linux laufen beide Varianten.

    Einmal editiert, zuletzt von Tell (31. Januar 2016 um 19:31)

  • Danke schonmal.
    Hm, da kommen aber gleich mehrere Werte bei mir raus:


    Code
    pi@raspberrypi ~/script $ ps aux | awk '/bash/ { print $3; }'
    0.0
    0.2
    0.0
    0.0
    0.0
    0.0

    Aber jetzt weiß ich mir damit zu helfen und komme weiter...
    :danke_ATDE:

  • Zunächst mal musst du auch die Suche an sich filtern, also den grep Befehl, sonst hast du 2 Treffer: grep -v grep

    Das nächste ist aber auch das eine Momentaufnahme nicht repräsentativ ist, sondern erst dann verwertet werden kann wenn von mehreren Messungen ein Mittelwert verwendet wird.

    Beispiel Script:

    Wie du siehst hat das 1.mal auslesen höhere Werte als die späteren und genau deshalb ist eine einmalige Momentaufnahme nicht repräsentativ

    In meiner cpu.php wird auch durch mehrere Messungen ein Mittelwert Kalkuliert bevor dieser angezeigt wird.


    Und zu deiner Frage: awk
    Du ermittelst eine Zeile und willst aus dieser Zeile die 3. Spalte, also das 3. Argument und somit $3

    Code
    ps aux | grep -v grep | grep sshd | awk '{print $3}'

    Wie du an dem Beispiel aber siehst gibt es mehrere Prozesse. Effizienter wäre die PID des Prozesses zu ermitteln (pidof) und dann /proc/<PID>/stat zu prüfen, oder eben nur nach der pid zu filtern..

    Evtl. ist auch das hilfreich:
    Raspberry 2 erscheint
    https://pypi.python.org/pypi/psutil

  • Hallo zusammen,

    zu diesem Thema gab es schon mal einen Thread, den hier.

    Das eine Ergebnis war eine Pipe, die die CPU-Auslastung liefert. Dazu habe ich noch ein kleines Programm geliefert, dass einen Tick weniger CPU-Auslastung liefert als z.B. top.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    2 Mal editiert, zuletzt von Andreas (15. Oktober 2017 um 10:21)

  • Hallo Meigrafd,

    aber er enthält Stichworte, um Lösungen zu finden, statt immer wieder zu den gleichen Fragen den gleichen Inhalt zu verzapfen. Und der Thread damals zählt zu den besseren in diesem Forum...

    Ja, ich weiß, nicht mehr selber suchen - nur noch Lösungen präsentieren - auf immer wieder dieselben Fragen.

    Dies führt dazu, dass man irgendwann selber nichts mehr findet.


    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (31. Januar 2016 um 21:18)


  • aber er enthält Stichworte, um Lösungen zu finden

    Achja? Welche wären das? Pipe? top? ... super ... Na dann such mal nach Deinen Stichworten und viel Glück beim finden von was Sinnvollem - wir sprechen uns in 2 Monaten dann noch mal, dann erwarte ich Ergebnisse!


    PS: hab dein Dein Edit von vor 14min gesehen.. zuvor enthielt der Beitrag aber keine wirklich nützlichen Infos

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!