it-swarm.com.de

Zeigen Sie die fünf wichtigsten CPU-verbrauchenden Prozesse mit `ps` an

Wie zeige ich die fünf wichtigsten CPU-verbrauchenden Prozesse mit ps?

115
PlanasB

Warum ps verwenden, wenn Sie dies mit dem Befehl top problemlos tun können?

Wenn Sie ps verwenden müssen, versuchen Sie Folgendes:

ps aux | sort -nrk 3,3 | head -n 5

Wenn Sie etwas wollen, das mit ständigen Updates wirklich 'top'esq' ist, verwenden Sie watch

watch "ps aux | sort -nrk 3,3 | head -n 5"
112
Boban P.

Die richtige Antwort lautet:

ps --sort=-pcpu | head -n 6

So können Sie Spalten angeben, ohne die Sortierung zu beeinträchtigen.

Ex:

ps -Ao user,uid,comm,pid,pcpu,tty --sort=-pcpu | head -n 6

Hinweis für MAC OS X: In Mac OS X erkennt ps--sort Nicht, bietet jedoch -r An, um nach der aktuellen CPU-Auslastung zu sortieren. So können Sie für Mac OS X Folgendes verwenden:

ps -Ao user,uid,comm,pid,pcpu,tty -r | head -n 6
94
Facundo Victor

Abhängig von Ihren Anforderungen finden Sie dies möglicherweise etwas lesbarer:

ps -eo pcpu,pid,user,args --no-headers| sort -t. -nk1,2 -k4,4 -r |head -n 5

beispielausgabe:

 1.3     4 root     [ksoftirqd/0]
 1.1     9 root     [ksoftirqd/1]
 1.0 17606 nobody   /usr/sbin/gmetad
 1.0    13 root     [ksoftirqd/2]
 0.3 17401 nobody   /usr/sbin/gmond

(Die Felder sind% CPU, PID, USER, COMMAND)

28

Ich glaube nicht, dass ps das ist, wonach Sie suchen. Haben Sie sich die Ausgabe von top angesehen?

Wenn Sie GNU-Top haben, versuchen Sie, im Batch-Modus eine nach CPU-Nutzung sortierte Prozessliste auszuspucken und mit Kopf/Schwanz die oberen 5 Zeilen zu erhalten (die ersten 8 sind Überschriften):

top -b -n 1 | head -n 12  | tail -n 5

Das BSD-Top scheint sich anders zu verhalten und verfügt nicht über einen nicht interaktiven Modus. Verwenden Sie daher eine der anderen ps -basierten Lösungen.

24
Caleb

Der schnellste Liner, den ich dafür gefunden habe (Anmerkung 6, weil sich der Header summiert):

ps aux k-pcpu | head -6
6
Nestor Urquiza

Beachten Sie, dass aktuelle Versionen von ps über Sortierfunktionen verfügen, die auf Feldcodes basieren (auf der ps-Manpage angegeben). Der Feldcode für die Prozessornutzung lautet "c". Sie können --sort c Am Ende eines ps-Befehls verwenden, z. ps aux --sort c

Dadurch wird der Prozess mit der meisten CPU am Ende der Liste platziert. Umgekehrte Reihenfolge der Liste durch Hinzufügen eines Minus zum Feldcode, der zum Sortieren von z. ps aux --sort -c

5
Cian D

Um anderen wertvollen Antworten einen Punkt hinzuzufügen, bevorzuge ich:

ps auxk-c | head -6

Es wird auch der Header gedruckt, der Nizza ist.

Hier ist k identisch mit --sort Und c gibt das Feld für die CPU-Auslastung (Alias ​​%cpu) Für die Sortierung an, während - Für die umgekehrte Sortierung ist .

Sie können weitere durch , Getrennte Bezeichner hinzufügen. Andere mögliche Bezeichner sind: %mem, args, bsdstart, pid, gid, uid ... die vollständige Liste finden Sie im Abschnitt STANDARD FORMAT SPECIFIERS Abschnitt der Manpage. Zum Beispiel:

 ps auxk -gid,-%mem | head -11

würde 10 Prozesse mit der höchsten Gruppen-ID drucken, intern sortiert nach Speichernutzung.

4
2i3r

Das Kommandozeilen-Tool ps hat eine eigene Sortieroption, daher bevorzuge ich:

$ ps -eo pcpu,args --sort=-%cpu | head

Sie können die gewünschten Spalten hinzufügen. Welche anderen Optionen verfügbar sind, finden Sie auf der Manpage ps.

$ man ps

Ich glaube, der einfachste Weg zu sehen Top 5 CPU-Verbrauchsprozess ist,

ps -eo pid,comm,%cpu,%mem --sort=-%cpu | head -n 5

Zu sehen Top 5 Speicher verbrauchen Prozess ist,

ps -eo pid,comm,%cpu,%mem --sort=-%mem | head -n 5

Wo,

-e: Mit diesem Flag werden alle Prozesse ausgewählt

-o: Dieses Flag wird zum Formatieren als benutzerdefiniert verwendet.

pid: Dieses Argument wird zum Anzeigen von pid verwendet

comm: Dieses Argument wird nur zum Anzeigen des Befehlsnamens verwendet. Um den vollständigen Befehl zu erhalten, verwenden Sie args, cmd oder command

%cpu: Dieses Argument zeigt den Prozentsatz der CPU-Auslastung des Prozesses im Format "##. #". Hier kann auch pcpu verwendet werden.

%mem: Dieses Argument zeigt das Verhältnis der residenten Satzgröße des Prozesses zum physischen Speicher auf dem Computer, ausgedrückt als Prozentsatz. Hier kann auch pmem verwendet werden.

--sort: Sortierreihenfolge angeben. Nach = das - Zeichen wird verwendet, um den höchsten Wert oben zu sortieren, wobei die Standardoption + soll eine aufsteigende numerische Reihenfolge auflisten [d. h. 0 bis n].

0
muhammad

top unter Mac OS X verfügt über eine Protokollierungsmodusoption in Form von top -l numberOfSamples (was dem Batch-Modus von GNU top) zu entsprechen scheint. Es müssen jedoch mindestens zwei Proben vorhanden sein, da "die erste Probe angezeigt wird Für jeden Prozess wird eine ungültige% CPU angezeigt, da diese anhand des Deltas zwischen den Abtastwerten berechnet wird. "(man 1 top).

# examples
top -o cpu -l 2 -n 5 | tail -n 6
top -o cpu -l 2 -n 5 -stats pid,command,cpu | tail -n 6
top -o cpu -l 2 -n 5 -stats pid,command,cpu -U $(logname) | tail -n 6
0
ulf

top zeigt an, was Ihre CPU verwendet. Wenn Sie es installiert haben, können Sie mit htop eine genauere Steuerung durchführen, einschließlich der Filterung nach - in Ihrem Fall - CPU.

0
PSN