
Ich möchte die CPU-Auslastung oder die Lese-/Schreibnutzung der Festplatte beispielsweise für einen bestimmten Prozess überwachen ./myprocess
.
Zum Überwachen der CPU top
scheinen Befehle eine gute Option zu sein, und zum Lesen und Schreiben iotop
eine 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 top
und iotop
in 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 ps
Befehl und ein bisschen awk
Gefummel 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/status
regelmäßig durchzusehen. Dadurch sollten Sie einen Großteil der Informationen erhalten, nach denen Sie suchen.