Wie finde ich den Prozess mit der höchsten Last?

10

Ich habe einen Single-Core-VPS mit einem Lastdurchschnitt, der manchmal über 25 hinausgeht. Wenn dies erreicht ist, wird es unerträglich langsam, und selbst das Durchlaufen von Befehlen dash, die schneller sind und weniger RAM benötigen als bash, dauert eine Weile. Wie kann ich feststellen, welcher Prozess die hohe Last verursacht?

NerdOfLinux
quelle
2
sudo apt install htopbietet Ihnen ein nützliches Textmodus-Tool für diesen Zweck (benutzerfreundlicher als der Standard top). topIst aber gut, wenn Sie einen kleinen Platzbedarf wünschen.
Sudodus
2
Die Länge der Ladewarteschlange gibt an, wie viele Prozesse für die CPU bereit sind. Dies muss nicht unbedingt ein einzelner Prozess sein, der das Problem verursacht.
Thorbjørn Ravn Andersen

Antworten:

16

Sie können installieren htop. Das Gute daran htopist, dass es Ihnen Ihre Auslastung pro CPU sowie ein aussagekräftiges Textdiagramm Ihres Speichers und der Swap-Auslastung ganz oben anzeigt.

So installieren Sie htop:

sudo apt-get install htop

Starten Sie es:

htop

Geben Sie hier die Bildbeschreibung ein

Drücken Sie F6die Prozesse sortieren, dann mit der Navigationstaste Sie können wählen , PERCENT_CPUund drücken Sie die Eingabetaste.

Geben Sie hier die Bildbeschreibung ein

Oder Sie können topauf diese Weise verwenden ( Quelle ):

top -b -n 1 | head -n 12
neferpitou
quelle
2
Als Verknüpfung können Sie Pnach Prozessornutzung, MSpeicher oder TZeit sortieren und tzum Baumlayout zurückkehren.
Deltab
Interessanterweise htophat einige grundlegende Mausunterstützung. Wenn Sie auf die Spalten klicken, können Sie auch nach diesen sortieren (wenn ich mich nicht irre). Es gibt einige andere Vorgänge, die mit Ihrer Maus funktionieren.
Ismael Miguel
10

Das Folgende wird lediglich von Unix.SE gestohlen : Finden Sie den Prozess, der die maximale CPU-Auslastung beansprucht, wenn die CPU-Auslastung mehr als 60% beträgt? , obwohl natürlich an diese Frage angepasst.

Listen Sie Prozesse nach spezifischer CPU-Auslastung auf

ps ahux --sort=-c | awk '{if($3>0.0)printf"%s %6d %s\n",$3,$2,$11}'

Dies gibt eine Liste der Prozesse mit einer CPU-Auslastung in >0.0%. Sie können diesen Wert entsprechend Ihren Anforderungen ändern, z >50.0. Jede Zeile enthält die CPU-Auslastung in Prozent, die PID und die Datei des Prozesses.

Listen Sie Prozesse mit der höchsten CPU-Auslastung auf

ps ahux --sort=-c | awk 'NR<=5{printf"%s %6d %s\n",$3,$2,$11}'

Dies zeigt die Top 5 ( NR<=5) Prozesse, die derzeit die meiste CPU-Auslastung verursachen.

Dessert
quelle
1

Gestern habe ich studiert awkund mit den beiden anderen Antworten gespielt. Hier ist das Ergebnis:

  • Holen Sie sich nur den Prozess mit der höchsten CPU-Auslastung mit ps aux:

    ps auxh | awk -v max=0 '{if($3>max){CPU=$3; PID=$2; NAME=$11; max=$3}} END{printf "%5s %6d %s\n",CPU,PID,NAME}'
    
  • Holen Sie sich die drei Prozesse mit der höchsten CPU-Auslastung mit top:

    top -b -n 1 | awk 'NR>7 && NR<11 {printf "top: %5s %6d %s %s\n",$9,$1,$12,$13}'
    
  • Holen Sie sich die drei Prozesse mit der höchsten CPU-Auslastung mit ps aux:

    ps auxh --sort=-c | awk 'NR<=3 {printf "ps:  %5s %6d %s\n",$3,$2,$11}'
    

Ich habe versucht, die letzten beiden Befehle gleichzeitig (mit <command>; wait; <command>und <command> & <command> &) auszuführen , aber dann habe ich festgestellt, dass dies überhaupt nicht möglich ist :)


Verweise:

pa4080
quelle
Der letzte zeigt nicht den Prozess mit der höchsten CPU-Auslastung, sondern beginnt mit dem zweiten, den Sie wahrscheinlich dort gemeint NR>=2haben - es stellt sich heraus, dass psdie Option hdie Kopfzeile weglässt, siehe meine aktualisierte Antwort.
Dessert
@dessert, du hast recht, vorher war es NR>=2, ist aber NR>1kurz :) Ich habe die Antwort aktualisiert.
pa4080
1

Verwenden topBefehl

top- Linux-Prozesse anzeigen

Das Top-Programm bietet eine dynamische Echtzeitansicht eines laufenden Systems. Es kann Systemzusammenfassungsinformationen sowie eine Liste der Prozesse oder Threads anzeigen, die derzeit vom Linux-Kernel verwaltet werden. Die angezeigten Arten von Systemzusammenfassungsinformationen sowie die Arten, die Reihenfolge und die Größe der für Prozesse angezeigten Informationen können vom Benutzer konfiguriert werden, und diese Konfiguration kann über Neustarts hinweg dauerhaft beibehalten werden.

Quelle

gutes youtube tutorial

Eric Korolev
quelle