Skript zum Protokollieren aller Statistiken für einen bestimmten Prozess

Skript zum Protokollieren aller Statistiken für einen bestimmten Prozess

Ich möchte die CPU-Auslastung oder die Lese-/Schreibnutzung der Festplatte beispielsweise für einen bestimmten Prozess überwachen ./myprocess.

Zum Überwachen der CPU topscheinen Befehle eine gute Option zu sein, und zum Lesen und Schreiben iotopeine praktische.

Um beispielsweise Lese-/Schreibvorgänge jede Sekunde zu überwachen, verwende ich den Befehl iotop -tbod1 | grep "myprocess".

Mein Problem besteht darin, dass ich nur drei Variablen speichern möchte, nämlich Lesen/Sek., Schreiben/Sek. und CPU-Auslastung/Sek. Können Sie mir mit einem Skript helfen, das die Ausgaben der oben genannten drei Variablen kombiniert topund iotopin einer Protokolldatei speichert?

Danke!

Antwort1

Wie wäre es mitPidStat?. Hast du es probiert? Möglicherweise brauchst du die PID für den Prozess, den du überwachen möchtest, aber die sollte mit dem psBefehl und ein bisschen awkGefummel relativ einfach zu bekommen sein.

Es ist Teil des Pakets sysstat, das Sie in .deb-basierten Systemen installieren können, indem Sie Folgendes eingeben:apt-get install sysstat

Antwort2

Sie können versuchen, prtstat () zu verwenden sudo apt-get install psmisc:

watch -n1 prtstat <PID> | tee mylog.log

Die Prozessstatistiken werden jede Sekunde ausgegeben. Wenn Sie diese Daten analysieren möchten, verwenden Sie die Rohversion (-r).

Wenn Sie beispielsweise utime möchten, können Sie den obigen Befehl wie folgt erweitern:

prtstat -r 30557 | grep -w utime | awk '{print $4}'

Antwort3

Sie könnenAbonnierenfür diese Aufgabe:

audria -d 1 $(pidof myprocess) | awk -F "," '{print $7, $28, $32}'

Dadurch wird die Verzögerung auf1zweitens, überwachenmeinProzessund drucken Sie die aktuelleCPU(Feld 7),gelesene Bytes/s(Feld 28) undBytes/s schreiben(Feld 32). Die Lese-/Schreibzähler hier schließen zwischengespeicherte Bytes aus. Wenn Sie sie einschließen möchten, wählen Sie die Felder26Und30stattdessen.

audria kann Ihren Prozess bei Bedarf auch von Anfang an überwachen. Sie können auch ein kürzeres Intervall wählen oder mehrere zu überwachende PIDs angeben.

Antwort4

Sie könnten versuchen, den Inhalt von /proc/$PID/statusregelmäßig durchzusehen. Dadurch sollten Sie einen Großteil der Informationen erhalten, nach denen Sie suchen.

verwandte Informationen