Abrufen der CPU-Nutzung und Speichernutzung eines einzelnen Prozesses auf Linux?
Möchte ich, um die CPU-und Speichernutzung eines einzelnen Prozesses auf Linux - ich weiß, dass die PID. Hoffentlich kann ich es in jeder Sekunde und schreibt Sie in eine CSV-über die "watch" - Befehl. Welchen Befehl kann ich verwenden, um diese Informationen zu bekommen aus der Linux-Kommando-Zeile?
- Das sieht aus wie ein Duplikat von stackoverflow.com/questions/806830/...
- Gehört auf SuperUser.
- Oder ServerFault.
- Können wir den Gebrauch von gdb Aufruf getpid und top -p <, die pid>?
Du musst angemeldet sein, um einen Kommentar abzugeben.
(Sie können lassen Sie "cmd" ein, aber das könnte hilfreich sein bei der Fehlersuche).
Beachten Sie, dass diese gibt die Durchschnittliche CPU-Auslastung des Prozesses über die Zeit hat es ausgeführt wurde.
| tail -n +2
ps
). Dies ist nicht die echte just-in-time CPU-Auslastung. Es kann auch sehr unterschiedlich sein von dem, wastop
zeigt, zum Beispiel.ps -e -o pcpu,args
wird zeigen, den cpu-Durchschnitt über die Lebensdauer des Prozesses, das ist natürlich nicht das, was Sie wollen, wenn es einem lange Laufenden Prozesswhile true; do ps -p 20283 -o %cpu,%mem,cmd; sleep 1; done;
Erhalten eine kontinuierliche status jede Sekunde.time
, für die Speicher, den Sie brauchen, um einen memory-profiler wie valgrind ist Massiv tool.%cpu
Maßnahme ist eine CPU (im Durchschnitt, über den Prozess Lebensdauer), also mit einem Multithread-Prozess die Zahl kann größer als 100%.Variante caf s Antwort:
top -p <pid>
Diese auto-aktualisiert die CPU-Auslastung so ist es gut für die überwachung.
htop -p <pid>
funktioniert auch..Können Sie die Ergebnisse, indem Sie den Namen des Prozesses mit
den
-C
option ermöglicht die Nutzung von Prozess-Namen ohne zu wissen, es ist pid.ps -C chrome -o pid,%cpu,%mem,cmd
Verwenden pidstat (von sysstat - Siehe Link).
z.B. zur überwachung dieser zwei-Prozess-IDs (12345 und 11223) alle 5 Sekunden verwenden
pidstat
das ist ein großer Befehl, und praktisch auch für die Skripten!Ein Programm starten und überwachen
Diese form ist nützlich, wenn Sie möchten benchmark eine ausführbare Datei leicht:
Nun, wenn Sie drücken Sie Strg + C beendet das Programm und Stoppt die überwachung. Beispiel-Ausgabe:
Verwandte: https://unix.stackexchange.com/questions/554/how-to-monitor-cpu-memory-usage-of-a-single-process
Getestet auf Ubuntu 16.04.
Als kommentierte in caf s Antwort oben, ps und in einigen Fällen pidstat geben Sie der durchschnittlichen Lebensdauer der pCPU.
Um genauere Ergebnisse verwenden Sie top. Wenn Sie ausführen müssen, um top-sobald Sie laufen können:
oder verarbeiten nur die Daten und header:
ohne Header:
Könnten Sie
top -b
und grep die pid, die Sie möchten (mit der-b
fahne oben läuft auch im batch-Modus), oder die-p
Flagge und geben Sie die pid ohne Verwendung von grep.oder pro Prozess
ps
Befehl (sollten nicht):top
Befehl (verwenden soll):Verwenden
top
um die CPU-Nutzung in Echtzeit(aktuell kurzes Intervall):top -b -n 2 -d 0.2 -p 6962 | tail -1 | awk '{print $9}'
echo wie:
78.6
-b
: Batch-mode-n 2
: Anzahl der Iterationen, verwenden Sie2
weil: Beim ersten ausführen es, es hat keine VorherigeProbe, vergleichen, so werden diese ersten Werte sind die Prozentsätze, die seit boot.
-d 0.2
: Delay-Zeit(in der zweiten, hier 200ms)-p 6962
: Monitor-PIDstail -1
: die Letzte Zeileawk '{print $9}'
: der 9-TEN Spalte(die cpu-Auslastung, Anzahl)wobei die erste Spalte ist die PID,die zweite Spalte CPU-Auslastung ,Dritte Spalte Speichernutzung.
Um die Speicherauslastung nur Ihre Anwendung (im Gegensatz zu den shared libraries es verwendet, müssen Sie Linux verwenden, die smaps-Schnittstelle). Diese Antwort erklärt es gut.
PID - Prozess-ID
etime - Prozess Ausgeführt wird, der/Live Dauer
%cpu - CPU-Auslastung
%mem - Memory-usage
cmd - Befehl
Ersetzen "processname", mit was auch immer Prozess, den Sie verfolgen möchten, mysql nginx, php-fpm, etc ...
Alle, die Antworten hier zeigen, ist nur die Erinnerung Prozentsatz für die PID.
Hier ist ein Beispiel, wie man die rss-Speichernutzung in KB für alle apache-Prozesse, ersetzen "grep apache" mit "grep PID" wenn Sie nur wollen, zu beobachten, eine bestimmte PID:
Diese Drucke:
CPU %:
Ausgabe:
Dies ist ein netter trick, eine oder mehrere der Programme in Echtzeit, während auch beobachten, dass einige andere tool ' s Ausgabe:
watch "top -bn1 -p$(pidof foo),$(pidof bar); tool"
(Wenn Sie in MacOS 10.10, versuchen Sie das accumulative -c option von oben:
(Diese option ist nicht verfügbar in anderen linux versucht mit Scientific Linux el6 und RHEL6)
top -c -p PID
dieser Befehl funktioniertOben Liste der top cpu-und Speicher-raubender Prozess
Für diejenigen, die kämpfte für eine Weile wonderring, warum die gewählte Antwort funktioniert nicht:
Kein PLATZ ibetween
%cpu,
und%mem
.CPU-und Speichernutzung eines einzelnen Prozesses auf Linux oder Holen Sie sich die top 10 cpu genutzt Prozessen, indem Sie unten den Befehl
ps -aux --sort-pcpu | head-n 11