Antworten:
Warum verwenden, pswenn Sie es einfach mit dem topBefehl tun können ?
Wenn Sie verwenden müssen ps, versuchen Sie Folgendes:
ps aux | sort -nrk 3,3 | head -n 5
Wenn Sie etwas möchten, das wirklich "top" ist und ständig aktualisiert wird, verwenden Sie watch
watch "ps aux | sort -nrk 3,3 | head -n 5"
ps aux | sort -nrk 3,3 | head -n 5
toptatsächlichen Funktionsweise unterscheidet .
topliest die Prozessliste und zeigt das Ergebnis alleine an, ohne zu einem anderen Prozess
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 : Wird in Mac OS X psnicht erkannt --sort, bietet -rjedoch die Sortierung nach aktueller CPU-Auslastung an. Daher können Sie für Mac OS X Folgendes verwenden:
ps -Ao user,uid,comm,pid,pcpu,tty -r | head -n 6
bash(x2, oder headauch) ps...
sort. Der zweite zeigt, wie Spalten angegeben werden, ohne die Sortierung zu beeinträchtigen. Wenn Sie etwas erklären, ist es immer besser, kurz und prägnant zu sein und jeweils eine Sache zu erklären.
Abhängig von Ihren Bedürfnissen 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)
Ich denke nicht, pswonach du suchst. Hast du dir die Ausgabe von angeschaut top?
Wenn Sie GNU-Top haben, versuchen Sie, im Batch-Modus eine nach CPU-Auslastung sortierte Prozessliste auszuspucken und mit head / tail die Top-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 psbasierten Lösungen.
top -o cpu -n 5eine Möglichkeit, dasselbe zu erreichen. Weiß jemand? Meine topist anders als deine top.
-ound -nlegt fest, wie oft das Display vor dem Beenden aktualisiert wird.
topscheint keinen Batch-Modus zu haben, was ziemlich einschränkend ist. Es muss eine Möglichkeit zur Weiterleitung topin andere Befehle geben. Ich werde etwas recherchieren.
tophat heute Nachmittag wie beschrieben gearbeitet. Prost.
Schnellster Liner, den ich dafür gefunden habe (Anmerkung 6, da der Header zusammenfällt):
ps aux k-pcpu | head -6
Beachten Sie, dass die aktuellen Versionen von ps Sortierfunktionen basierend auf den Feldcodes (auf der ps-Manpage) enthalten. Der Feldcode für die Prozessorverwendung lautet "c". Sie können --sort cam Ende eines ps-Befehls zps 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 verwendet wird, zps aux --sort -c
Um anderen wertvollen Antworten einen Punkt hinzuzufügen, bevorzuge ich:
ps auxk-c | head -6
Es druckt auch die Kopfzeile, was nett ist.
Hier kist identisch mit --sortund cgibt das CPU-Nutzungsfeld (Alias %cpu) für die Sortierung an, während -es sich um die umgekehrte Sortierung handelt.
Sie können mehr Bezeich durch voneinander getrennt sind ,, andere mögliche Bezeich sind: %mem, args, bsdstart, pid, gid, uid... , die Sie vollständige Liste in finden STANDARD Formatbezeichner Abschnitt der Mann - Seite. Zum Beispiel:
ps auxk -gid,-%mem | head -11
würde 10 Prozesse mit der höchsten Gruppen-ID drucken, intern sortiert nach Speichernutzung.
Das Kommandozeilen-Tool pshat eine eigene Sortieroption, daher bevorzuge ich:
$ ps -eo pcpu,args --sort=-%cpu | head
Sie können die gewünschten Spalten hinzufügen. Sehen Sie auf der psManpage nach, welche anderen Optionen verfügbar sind .
$ man ps
topUnter Mac OS X gibt es eine Option für den Protokollierungsmodus in Form von top -l numberOfSamples(was dem Batch-Modus von GNU zu entsprechen scheint top). Es ist jedoch erforderlich, mindestens zwei Stichproben zu haben, da "bei der ersten angezeigten Stichprobe für jeden Prozess ein ungültiger Prozentsatz der CPU angezeigt wird, da er anhand des Deltas zwischen Stichproben 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
Ich glaube, der einfachste Weg, um zu sehen, Top-5-CPU-verbrauchenden Prozess ist,
ps -eo pid,comm,%cpu,%mem --sort=-%cpu | head -n 5
Um zu sehen, wie viel Speicher in den Top 5 verbraucht wird,
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 benutzerdefinierten Formatieren 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 abzurufen args, verwenden Sie cmdodercommand
%cpu: Dieses Argument gibt den Prozentsatz der CPU-Auslastung des Prozesses im Format "##. #" An. Hier pcpukann auch verwendet werden.
%mem: Dieses Argument gibt das Verhältnis der Größe des residenten Satzes des Prozesses zum physischen Speicher auf dem Computer in Prozent an. Hier pmemkann auch verwendet werden.
--sort: Geben Sie die Sortierreihenfolge an. Nach =dem -Vorzeichen wird der höchste Wert oben sortiert, wobei die Standardoption darin +besteht, eine aufsteigende numerische Reihenfolge aufzulisten [dh 0 bis n].