Ich möchte die CPU- und Speicherauslastung eines einzelnen Prozesses unter Linux ermitteln - ich kenne die PID. Hoffentlich kann ich es jede Sekunde abrufen und mit dem Befehl 'watch' in eine CSV schreiben. Mit welchem Befehl kann ich diese Informationen über die Linux-Befehlszeile abrufen?
linux
shell
memory-management
cpu-usage
Supertux
quelle
quelle
Antworten:
(Sie können "cmd" weglassen, dies kann jedoch beim Debuggen hilfreich sein.)
Beachten Sie, dass dies die durchschnittliche CPU-Auslastung des Prozesses über die Zeit angibt, in der er ausgeführt wurde.
quelle
| tail -n +2
ps
). Dies ist nicht die echte Just-in-Time-CPU-Auslastung. Es kann sich auch sehr von dem unterscheiden, wastop
zum Beispiel gezeigt wird.ps -e -o pcpu,args
wird der CPU-Durchschnitt über die Lebensdauer des Prozesses angezeigt , was offensichtlich nicht das ist, was Sie wollen, wenn es sich um einen lang laufenden Prozess handeltEine Variante der Antwort von caf :
top -p <pid>
Dadurch wird die CPU-Auslastung automatisch aktualisiert, sodass eine Überwachung möglich ist.
quelle
pgrep
:top -p $(pgrep process_name)
Sie können die Ergebnisse anhand des Namens des Prozesses abrufen
Mit dieser
-C
Option können Sie den Prozessnamen verwenden, ohne die PID zu kennen.quelle
pid
sollte nur funktionieren.ps -C chrome -o pid,%cpu,%mem,cmd
Verwenden Sie pidstat (von sysstat - siehe Link ).
zB um diese beiden Prozess-IDs (12345 und 11223) alle 5 Sekunden zu überwachen
quelle
pidstat
dass dies ein großartiger Befehl ist und auch praktisch für Skripte!pidstat
gibt auch einen schönen Durchschnitt. Nur schade, dass ich keinen eleganteren Weg gefunden habepidstat -u 1 10 | grep ^Average | sort -r -n -b -k 8,8
ps
Befehl (sollte nicht verwendet werden):top
Befehl (sollte verwenden):Verwenden Sie
top
diese Option , um die CPU-Auslastung in Echtzeit abzurufen (aktuelles kurzes Intervall):top -b -n 2 -d 0.2 -p 6962 | tail -1 | awk '{print $9}'
wird wie folgt widerhallen:
78.6
-b
: Batch-Modus-n 2
: Anzahl der Iterationen, verwenden Sie,2
weil: Wenn Sie es zum ersten Mal ausführen, gibt es kein vorheriges Beispiel, mit dem Sie vergleichen können. Diese Anfangswerte sind also die Prozentsätze seit dem Start.-d 0.2
: Verzögerungszeit (in Sekunden sind hier 200 ms)-p 6962
: Monitor-PIDstail -1
: die letzte Reiheawk '{print $9}'
: die 9. Spalte (die CPU-Nutzungsnummer)quelle
Starten Sie ein Programm und überwachen Sie es
Dieses Formular ist nützlich, wenn Sie eine ausführbare Datei einfach vergleichen möchten:
Wenn Sie nun Strg + C drücken, wird das Programm beendet und die Überwachung beendet. Beispielausgabe:
Verbunden: /unix/554/how-to-monitor-cpu-memory-usage-of-a-single-process
Getestet unter Ubuntu 16.04.
quelle
Sie können
top -b
die gewünschte PID verwenden und auslesen (wobei das-b
Flag oben im Batch-Modus ausgeführt wird) oder auch das-p
Flag verwenden und die PID angeben, ohne grep zu verwenden.quelle
Wie in der obigen Antwort von caf kommentiert , geben ps und in einigen Fällen pidstat den Lebenszeitdurchschnitt der pCPU an. Um genauere Ergebnisse zu erhalten, verwenden Sie top. Wenn Sie top ausführen müssen, können Sie Folgendes ausführen:
oder nur für Prozessdaten und Header:
ohne Überschriften:
quelle
oder pro Prozess
quelle
Um die Speichernutzung nur Ihrer Anwendung zu ermitteln (im Gegensatz zu den von ihr verwendeten gemeinsam genutzten Bibliotheken müssen Sie die Linux-Smaps-Schnittstelle verwenden). Diese Antwort erklärt es gut .
quelle
Dabei ist die erste Spalte die PID, die CPU-Auslastung in der zweiten Spalte und die Speichernutzung in der dritten Spalte.
quelle
PID - Prozess-ID
etime - Prozesslauf / Live-Dauer
% cpu - CPU-Auslastung
% mem - Speichernutzung
cmd - Befehl
Ersetzen Sie den Prozessnamen durch den Prozess, den Sie verfolgen möchten, mysql nginx php-fpm usw.
quelle
Alle Antworten hier zeigen nur den Speicherprozentsatz für die PID.
Hier ist ein Beispiel, wie Sie die RSS-Speichernutzung in KB für alle Apache-Prozesse ermitteln können. Ersetzen Sie "grep apache" durch "grep PID", wenn Sie nur eine bestimmte PID anzeigen möchten:
Dies druckt:
Mit CPU%:
Ausgabe:
quelle
Für diejenigen, die sich eine Weile schwer getan haben und sich fragen, warum die ausgewählte Antwort nicht funktioniert:
Kein Platz zwischen
%cpu,
und%mem
.quelle
Dies ist ein guter Trick, um ein oder mehrere Programme in Echtzeit zu verfolgen und gleichzeitig die Ausgabe eines anderen Tools zu sehen:
watch "top -bn1 -p$(pidof foo),$(pidof bar); tool"
quelle
Der folgende Befehl ermittelt alle 40 Sekunden den Durchschnitt der CPU- und Speicherauslastung für einen bestimmten Prozess (pid).
Ausgabe für meinen Fall (erste zwei Zeilen für die CPU-Auslastung, zweite zwei Zeilen für den Speicher):
quelle
(Wenn Sie sich in MacOS 10.10 befinden, versuchen Sie die akkumulative Option -c von oben:
(Diese Option ist unter anderen Linux-Versionen nicht verfügbar, die mit Scientific Linux el6 und RHEL6 getestet wurden.)
quelle
Oben ist der Top-Prozess für CPU- und Speicherverbrauch aufgeführt
quelle
Basierend auf der Antwort von @ caf funktioniert das gut für mich.
Berechnen Sie den Durchschnitt für die angegebene PID:
Measure.sh
Verwendung:
quelle
CPU- und Speicherauslastung eines einzelnen Prozesses unter Linux oder Sie können die 10 am häufigsten verwendeten CPU-Prozesse mit dem folgenden Befehl abrufen
ps -aux --sort -pcpu | Kopf -n 11
quelle