GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Eine Anleitung zum Linux-Befehl „Top“.

Mit dem Befehl top können Benutzer Prozesse und die Nutzung von Systemressourcen unter Linux überwachen. Es ist eines der nützlichsten Tools in der Toolbox eines Systemadministrators und auf jeder Distribution vorinstalliert. Im Gegensatz zu anderen Befehlen wie ps , es ist interaktiv und Sie können die Liste der Prozesse durchsuchen, einen Prozess beenden und so weiter.

In diesem Artikel werden wir verstehen, wie man den Top-Befehl verwendet.

Inhalt

  • 1 Erste Schritte
  • 2 Die Benutzeroberfläche von top verstehen:der Zusammenfassungsbereich

    • 2.1 Systemzeit, Betriebszeit und Benutzersitzungen
    • 2.2 Speichernutzung
    • 2.3 Aufgaben
    • 2.4 CPU-Auslastung
    • 2,5 Lastdurchschnitt
  • 3 Die Benutzeroberfläche von top verstehen:der Aufgabenbereich
  • 4 Verwendungsbeispiele für Top-Befehle

    • 4.1 Tötungsprozesse
    • 4.2 Sortieren der Prozessliste
    • 4.3 Anzeigen einer Liste von Threads anstelle von Prozessen
    • 4.4 Vollständige Pfade anzeigen
    • 4.5 Waldansicht
    • 4.6 Prozesse eines Benutzers auflisten
    • 4.7 Durch Prozesse filtern
    • 4.8 Ändern des standardmäßigen Aussehens der CPU- und Speicherstatistiken
    • 4.9 Speichern Ihrer Einstellungen
  • 5 Fazit

Erste Schritte

Wie Sie vielleicht schon erraten haben, müssen Sie einfach Folgendes eingeben, um top zu starten:

top

Dadurch wird eine interaktive Befehlszeilenanwendung gestartet, ähnlich der im folgenden Screenshot. Die obere Hälfte der Ausgabe enthält Statistiken zu Prozessen und Ressourcenverbrauch, während die untere Hälfte eine Liste der aktuell laufenden Prozesse enthält. Mit den Pfeiltasten und den Bild-auf/ab-Tasten können Sie durch die Liste blättern. Wenn Sie den Vorgang beenden möchten, drücken Sie einfach „q“.

Es gibt eine Reihe von Varianten von top, aber im Rest dieses Artikels werden wir über die gebräuchlichste Variante sprechen – diejenige, die mit dem „procps-ng“-Paket geliefert wird. Sie können dies überprüfen, indem Sie Folgendes ausführen:

top -v

Wenn Sie diese Variante haben, wird dies in der Ausgabe angezeigt, etwa so:

procps-ng version 3.3.10

In der Benutzeroberfläche von top passiert ziemlich viel, also werden wir es im nächsten Abschnitt Stück für Stück aufschlüsseln.

Oberfläche von top verstehen:der Zusammenfassungsbereich

Wie wir bereits gesehen haben, ist die Ausgabe von top in zwei verschiedene Abschnitte unterteilt. In diesem Teil des Artikels konzentrieren wir uns auf die Elemente in der Hälfte der Ausgabe. Dieser Bereich wird auch „Zusammenfassungsbereich“ genannt.

Systemzeit, Betriebszeit und Benutzersitzungen

Ganz oben links auf dem Bildschirm (wie im obigen Screenshot markiert) zeigt top die aktuelle Uhrzeit an. Darauf folgt die Systemlaufzeit, die uns die Zeit angibt, die das System läuft. In unserem Beispiel ist die aktuelle Uhrzeit beispielsweise „15:39:37“, und das System läuft seit 90 Tagen, 15 Stunden und 26 Minuten.

Als nächstes kommt die Anzahl der aktiven Benutzersitzungen. In diesem Beispiel gibt es zwei aktive Benutzersitzungen. Diese Sitzungen können entweder auf einem TTY (physisch auf dem System, entweder über die Befehlszeile oder eine Desktopumgebung) oder einem PTY (z. B. einem Terminalemulatorfenster oder über SSH) durchgeführt werden. Wenn Sie sich über eine Desktop-Umgebung bei einem Linux-System anmelden und dann einen Terminalemulator starten, werden Sie feststellen, dass es zwei aktive Sitzungen gibt.

Wenn Sie mehr Details über die aktiven Benutzersitzungen erhalten möchten, verwenden Sie die who Befehl.

Speichernutzung



Der Abschnitt „Speicher“ zeigt Informationen zur Speichernutzung des Systems. Die mit „Mem“ und „Swap“ gekennzeichneten Zeilen zeigen Informationen über RAM bzw. Swap Space. Einfach ausgedrückt ist ein Swap Space ein Teil der Festplatte, der wie RAM verwendet wird. Wenn die RAM-Nutzung fast voll wird, werden selten genutzte Bereiche des RAM in den Auslagerungsbereich geschrieben, damit sie später bei Bedarf abgerufen werden können. Da der Zugriff auf Datenträger jedoch langsam ist, kann es die Systemleistung beeinträchtigen, sich zu sehr auf das Austauschen zu verlassen.

Wie Sie natürlich erwarten würden, haben die Werte „Gesamt“, „Kostenlos“ und „Gebraucht“ ihre übliche Bedeutung. Der „Avail Mem“-Wert ist die Speichermenge, die Prozessen zugewiesen werden kann, ohne dass mehr Swapping verursacht wird.

Auch der Linux-Kernel versucht auf verschiedene Weise, die Zugriffszeiten auf die Platten zu verkürzen. Es unterhält einen „Festplatten-Cache“ im RAM, in dem häufig verwendete Bereiche der Festplatte gespeichert werden. Darüber hinaus werden Festplattenschreibvorgänge in einem „Festplattenpuffer“ gespeichert, und der Kernel schreibt sie schließlich auf die Festplatte. Der von ihnen verbrauchte Gesamtspeicher ist der „buff/cache“-Wert. Es mag nach einer schlechten Sache klingen, ist es aber wirklich nicht – vom Cache verwendeter Speicher wird bei Bedarf Prozessen zugewiesen.

Aufgaben

Der Abschnitt „Aufgaben“ zeigt Statistiken zu den Prozessen, die auf Ihrem System ausgeführt werden. Der „Gesamt“-Wert ist einfach die Gesamtzahl der Prozesse. Im obigen Screenshot laufen beispielsweise 27 Prozesse. Um den Rest der Werte zu verstehen, benötigen wir ein wenig Hintergrundwissen darüber, wie der Linux-Kernel mit Prozessen umgeht.

Prozesse führen eine Mischung aus I/O-gebundener Arbeit (z. B. Lesen von Datenträgern) und CPU-gebundener Arbeit (z. B. Ausführen arithmetischer Operationen) aus. Die CPU ist im Leerlauf, wenn ein Prozess E/A ausführt, sodass Betriebssysteme während dieser Zeit auf die Ausführung anderer Prozesse umschalten. Darüber hinaus lässt das Betriebssystem zu, dass ein bestimmter Prozess für eine sehr kurze Zeit ausgeführt wird, und wechselt dann zu einem anderen Prozess. So erscheinen Betriebssysteme, als ob sie „Multitasking“ wären. Um all dies tun zu können, müssen wir den „Status“ eines Prozesses im Auge behalten. Unter Linux kann sich ein Prozess in diesen Zuständen befinden:

  • Runnable (R):Ein Prozess in diesem Zustand wird entweder auf der CPU ausgeführt oder er befindet sich in der Ausführungswarteschlange und ist zur Ausführung bereit.
  • Unterbrechbarer Ruhezustand (S):Prozesse in diesem Zustand warten auf den Abschluss eines Ereignisses.
  • Unterbrechungsfreier Ruhezustand (D):In diesem Fall wartet ein Prozess auf den Abschluss einer E/A-Operation.
  • Gestoppt (T):Diese Prozesse wurden durch ein Auftragssteuerungssignal (z. B. durch Drücken von Strg+Z) oder weil sie verfolgt werden, gestoppt.
  • Zombie (Z):Der Kernel verwaltet verschiedene Datenstrukturen im Speicher, um Prozesse zu verfolgen. Ein Prozess kann eine Reihe von untergeordneten Prozessen erstellen, und sie können beendet werden, während der übergeordnete Prozess noch vorhanden ist. Diese Datenstrukturen müssen jedoch beibehalten werden, bis der Elternprozess den Status der Kindprozesse erhält. Solche beendeten Prozesse, deren Datenstrukturen noch vorhanden sind, werden Zombies genannt.

Prozesse im D- und S-Zustand werden in „sleeping“ dargestellt und solche im T-Zustand in „stopped“. Die Anzahl der Zombies wird als „Zombie“-Wert angezeigt.

CPU-Auslastung

Der Abschnitt CPU-Auslastung zeigt den Prozentsatz der CPU-Zeit, die für verschiedene Aufgaben aufgewendet wird. Die us value ist die Zeit, die die CPU mit der Ausführung von Prozessen im Userspace verbringt. Ebenso die sy Wert ist die Zeit, die für die Ausführung von Kernelspace-Prozessen aufgewendet wird.

Linux verwendet einen „nice“-Wert, um die Priorität eines Prozesses zu bestimmen. Ein Prozess mit einem hohen „nice“-Wert ist „netter“ gegenüber anderen Prozessen und erhält eine niedrige Priorität. Ebenso erhalten Prozesse mit einem niedrigeren „nice“ eine höhere Priorität. Wie wir später sehen werden, kann der Standardwert „nice“ geändert werden. Die Zeit, die für die Ausführung von Prozessen mit einem manuell gesetzten „nice“ aufgewendet wird, erscheint als ni Wert.

Darauf folgt id , das ist die Zeit, in der die CPU im Leerlauf bleibt. Die meisten Betriebssysteme versetzen die CPU in einen Energiesparmodus, wenn sie sich im Leerlauf befindet. Als nächstes kommt die wa -Wert, der die Zeit ist, die die CPU damit verbringt, auf den Abschluss der E/A zu warten.

Interrupts sind Signale an den Prozessor über ein Ereignis, das sofortige Aufmerksamkeit erfordert. Hardware-Interrupts werden normalerweise von Peripheriegeräten verwendet, um das System über Ereignisse zu informieren, wie z. B. einen Tastendruck auf einer Tastatur. Andererseits werden Softwareunterbrechungen aufgrund spezifischer Anweisungen erzeugt, die auf dem Prozessor ausgeführt werden. In beiden Fällen werden sie vom Betriebssystem verarbeitet, und die Zeit, die für die Verarbeitung von Hardware- und Software-Interrupts aufgewendet wird, wird durch hi angegeben und si bzw..

In einer virtualisierten Umgebung wird jeder virtuellen Maschine (VM) ein Teil der CPU-Ressourcen zugeteilt. Das Betriebssystem erkennt, wenn es Arbeit zu erledigen hat, kann diese jedoch nicht ausführen, da die CPU auf einer anderen VM ausgelastet ist. Die auf diese Weise verlorene Zeit ist die „Steal“-Zeit, die als st angezeigt wird .

Lastdurchschnitt

Der Abschnitt Lastdurchschnitt stellt die durchschnittliche „Belastung“ über eine, fünf und fünfzehn Minuten dar. "Last" ist ein Maß für die Menge an Rechenarbeit, die ein System durchführt. Unter Linux ist die Last die Anzahl der Prozesse in den R- und D-Zuständen zu einem bestimmten Zeitpunkt. Der Wert „Durchschnittliche Auslastung“ gibt Ihnen ein relatives Maß dafür, wie lange Sie warten müssen, bis Dinge erledigt sind.



Betrachten wir einige Beispiele, um dieses Konzept zu verstehen. Auf einem Single-Core-System bedeutet ein Lastdurchschnitt von 0,4, dass das System nur 40 % der Arbeit erledigt, die es leisten kann. Ein Lastdurchschnitt von 1 bedeutet, dass das System genau ausgelastet ist – das System wird überlastet, selbst wenn ein wenig zusätzliche Arbeit hinzugefügt wird. Ein System mit einem Lastdurchschnitt von 2,12 bedeutet, dass es mit 112 % mehr Arbeit überlastet ist, als es bewältigen kann.

Auf einem Mehrkernsystem sollten Sie zuerst die durchschnittliche Auslastung durch die Anzahl der CPU-Kerne dividieren, um ein ähnliches Maß zu erhalten.

Außerdem ist „Lastdurchschnitt“ eigentlich nicht der typische „Durchschnitt“, den die meisten von uns kennen. Es handelt sich um einen „exponentiellen gleitenden Durchschnitt“, das heißt, ein kleiner Teil der vorherigen Lastdurchschnitte wird in den aktuellen Wert eingerechnet. Wenn Sie interessiert sind, deckt dieser Artikel alle technischen Details ab.

Oberfläche von top verstehen:der Aufgabenbereich

Der Zusammenfassungsbereich ist vergleichsweise einfacher und enthält eine Liste von Prozessen. In diesem Abschnitt lernen wir die verschiedenen Spalten kennen, die in der Standardausgabe von top angezeigt werden.

  • PID

Dies ist die Prozess-ID, eine eindeutige positive ganze Zahl, die einen Prozess identifiziert.

  • BENUTZER

Dies ist der „effektive“ Benutzername (der einer Benutzer-ID zugeordnet ist) des Benutzers, der den Vorgang gestartet hat. Linux weist Prozessen eine echte Benutzer-ID und eine effektive Benutzer-ID zu; letzteres ermöglicht es einem Prozess, im Namen eines anderen Benutzers zu handeln. (Zum Beispiel kann ein Nicht-Root-Benutzer zum Root aufsteigen, um ein Paket zu installieren.)

  • PR und NI

Das Feld „NI“ zeigt den „netten“ Wert eines Prozesses. Das Feld „PR“ zeigt die Planungspriorität des Prozesses aus der Perspektive des Kernels. Der Nice-Wert beeinflusst die Priorität eines Prozesses.

  • VIRT, RES, SHR und %MEM

Diese drei Felder beziehen sich auf den Speicherverbrauch der Prozesse. "VIRT" ist die Gesamtspeichermenge, die von einem Prozess verbraucht wird. Dazu gehören der Programmcode, die vom Prozess im Speicher gespeicherten Daten sowie alle Speicherbereiche, die auf die Festplatte ausgelagert wurden. „RES“ ist der vom Prozess im RAM verbrauchte Speicher, und „%MEM“ drückt diesen Wert als Prozentsatz des gesamten verfügbaren RAM aus. Schließlich ist „SHR“ die Menge an Speicher, die mit anderen Prozessen geteilt wird.

  • S

Wie wir bereits gesehen haben, kann sich ein Prozess in verschiedenen Zuständen befinden. Dieses Feld zeigt den Prozessstatus in Form eines einzelnen Buchstabens an.

  • ZEIT+

Dies ist die gesamte CPU-Zeit, die der Prozess seit seinem Start verwendet hat, auf die Hundertstelsekunde genau.

  • BEFEHL

Die Spalte COMMAND zeigt den Namen der Prozesse.

Top-Befehlsverwendungsbeispiele

Bisher haben wir über die Benutzeroberfläche von top gesprochen. Es kann jedoch auch Prozesse verwalten, und Sie können verschiedene Aspekte der Ausgabe von top steuern. In diesem Abschnitt werden wir uns einige Beispiele ansehen.

In den meisten Beispielen unten müssen Sie eine Taste drücken, während top läuft. Denken Sie daran, dass bei diesen Tastendrücken zwischen Groß- und Kleinschreibung unterschieden wird. Wenn Sie also „k“ drücken, während die Feststelltaste aktiviert ist, haben Sie tatsächlich ein „K“ gedrückt und der Befehl funktioniert nicht oder führt etwas ganz anderes aus.

Tötungsprozesse

Wenn Sie einen Prozess beenden möchten, drücken Sie einfach "k", wenn top ausgeführt wird. Dadurch wird eine Eingabeaufforderung angezeigt, die nach der Prozess-ID des Prozesses fragt und die Eingabetaste drückt.

Als nächstes geben Sie das Signal ein, mit dem der Prozess beendet werden soll. Wenn Sie dieses Feld leer lassen, verwendet top ein SIGTERM, mit dem Prozesse ordnungsgemäß beendet werden können. Wenn Sie einen Prozess zwangsweise beenden möchten, können Sie hier SIGKILL eingeben. Sie können hier auch die Signalnummer eingeben. Beispielsweise ist die Zahl für SIGTERM 15 und für SIGKILL 9.

Wenn Sie die Prozess-ID leer lassen und direkt die Eingabetaste drücken, wird der oberste Prozess in der Liste beendet. Wie bereits erwähnt, können Sie mit den Pfeiltasten scrollen und den Prozess, den Sie beenden möchten, auf diese Weise ändern.

Sortieren der Prozessliste

Einer der häufigsten Gründe, ein Tool wie top zu verwenden, ist herauszufinden, welcher Prozess die meisten Ressourcen verbraucht. Sie können die folgenden Tasten drücken, um die Liste zu sortieren:

  • 'M' zum Sortieren nach Speichernutzung
  • 'P' zum Sortieren nach CPU-Auslastung
  • 'N' zum Sortieren nach Prozess-ID
  • 'T' zum Sortieren nach Laufzeit

Standardmäßig zeigt top alle Ergebnisse in absteigender Reihenfolge an. Sie können jedoch zur aufsteigenden Reihenfolge wechseln, indem Sie „R“ drücken.

Sie können die Liste auch mit dem -o sortieren Schalter. Wenn Sie beispielsweise Prozesse nach CPU-Auslastung sortieren möchten, können Sie dies tun mit:

top -o %CPU

Auf die gleiche Weise können Sie die Liste nach beliebigen Attributen im Zusammenfassungsbereich sortieren.

Anzeigen einer Liste von Threads anstelle von Prozessen

Wir haben bereits angesprochen, wie Linux zwischen Prozessen umschaltet. Leider teilen sich Prozesse keinen Speicher oder andere Ressourcen, was solche Umschaltungen ziemlich langsam macht. Linux unterstützt, wie viele andere Betriebssysteme, eine „leichte“ Alternative, die als „Thread“ bezeichnet wird. Sie sind Teil eines Prozesses und teilen bestimmte Speicherbereiche und andere Ressourcen, können aber wie Prozesse gleichzeitig ausgeführt werden.

Standardmäßig zeigt top eine Liste von Prozessen in seiner Ausgabe an. Wenn Sie stattdessen die Threads auflisten möchten, drücken Sie „H“, wenn top ausgeführt wird. Beachten Sie, dass in der Zeile „Tasks“ stattdessen „Threads“ steht und statt der Prozesse die Anzahl der Threads angezeigt wird.

Sie haben vielleicht bemerkt, dass sich keines der Attribute in der Prozessliste geändert hat. Wie ist das möglich, da sich Prozesse von Threads unterscheiden? Innerhalb des Linux-Kernels werden Threads und Prozesse mit denselben Datenstrukturen behandelt. Somit hat jeder Thread seine eigene ID, seinen eigenen Status und so weiter.

Wenn Sie zurück zur Prozessansicht wechseln möchten, drücken Sie erneut „H“. Zusätzlich können Sie den -H verwenden Wechseln Sie standardmäßig zur Anzeige von Threads.

top -H

Vollständige Pfade anzeigen

Standardmäßig zeigt top nicht den vollständigen Pfad zum Programm an oder unterscheidet zwischen Kernelspace-Prozessen und Userspace-Prozessen. Wenn Sie diese Informationen benötigen, drücken Sie „c“, während top ausgeführt wird. Drücken Sie erneut „c“, um zur Standardeinstellung zurückzukehren.

Kernelspace-Prozesse sind mit eckigen Klammern um sie herum gekennzeichnet. Als Beispiel gibt es im obigen Screenshot zwei Kernel-Prozesse, kthreadd und khelper . Bei den meisten Linux-Installationen gibt es normalerweise ein paar mehr davon.

Alternativ können Sie auch oben mit dem -c beginnen Argument:

top -c

Waldblick

Manchmal möchten Sie vielleicht die Child-Eltern-Hierarchie von Prozessen sehen. Sie können dies in der Waldansicht sehen, indem Sie ‘v’/’V’ drücken, während top läuft.

Wie Sie dem obigen Screenshot entnehmen können, ist die systemd Der Prozess war der erste, der auf dem System gestartet wurde. Es hat Prozesse wie sshd gestartet , die wiederum andere sshd erstellt hat Prozesse usw.

Prozesse eines Benutzers auflisten

Um Prozesse von einem bestimmten Benutzer aufzulisten, drücken Sie ‘u’, wenn top läuft. Geben Sie dann den Benutzernamen ein oder lassen Sie das Feld leer, um Prozesse für alle Benutzer anzuzeigen.

Alternativ können Sie den Top-Befehl mit -u ausführen Schalter. In diesem Beispiel haben wir alle Prozesse des Root-Benutzers aufgelistet.

top -u root

Durch Prozesse filtern

Wenn Sie mit vielen Prozessen arbeiten müssen, wird eine einfache Sortierung nicht gut genug funktionieren. In einer solchen Situation können Sie die Filterung von top verwenden, um sich auf einige wenige Prozesse zu konzentrieren. Um diesen Modus zu aktivieren, drücken Sie ‘o’/’O’. Oben wird eine Eingabeaufforderung angezeigt, und Sie können hier einen Filterausdruck eingeben.

Ein Filterausdruck ist eine Anweisung, die eine Beziehung zwischen einem Attribut und einem Wert angibt. Einige Beispiele für Filter sind:

  • COMMAND=getty :Prozesse filtern, die „getty“ im COMMAND-Attribut enthalten.
  • !COMMAND=getty :Prozesse filtern, die kein „getty“ im COMMAND-Attribut haben.
  • %CPU>3.0 :Prozesse filtern, die eine CPU-Auslastung von mehr als 3 % haben.

Sobald Sie einen Filter hinzugefügt haben, können Sie die Dinge weiter reduzieren, indem Sie weitere Filter hinzufügen. Um alle hinzugefügten Filter zu löschen, drücken Sie „=“.

Ändern des standardmäßigen Aussehens der CPU- und Speicherstatistiken

Wenn Sie hauptsächlich in einer GUI-Umgebung zu Hause sind, gefällt Ihnen die Standardmethode von top zur Anzeige von CPU- und Speicherstatistiken möglicherweise nicht. Sie können "t" und "m" drücken, um den Stil der CPU- und Speicherstatistiken zu ändern. Hier ist ein Screenshot von oben, wo wir einmal „t“ und „m“ gedrückt haben.

Wenn Sie wiederholt „t“ oder „m“ drücken, werden vier verschiedene Ansichten durchlaufen. Bei den ersten beiden Drücken werden zwei verschiedene Arten von Fortschrittsbalken durchlaufen. Wenn Sie die Taste ein drittes Mal drücken, wird der Fortschrittsbalken ausgeblendet. Wenn Sie die Taste erneut drücken, werden die standardmäßigen, textbasierten Zähler wiederhergestellt.

Speichern Ihrer Einstellungen

Wenn Sie Änderungen an der Ausgabe von top vorgenommen haben, können Sie diese zur späteren Verwendung speichern, indem Sie „W“ drücken. top schreibt seine Konfiguration in .toprc Datei in Ihrem Home-Verzeichnis.

Schlussfolgerung

Der Befehl top ist äußerst hilfreich für die Überwachung und Verwaltung von Prozessen auf einem Linux-System. Dieser Artikel kratzt nur an der Oberfläche, und es gibt einiges, was wir nicht behandelt haben. Zum Beispiel gibt es viel mehr Spalten, die Sie oben hinzufügen können. Sehen Sie sich für all diese Dinge unbedingt die Manpage an, indem Sie man top ausführen auf Ihrem System.


Linux
  1. Eine Anleitung zum Linux-Terminal für Anfänger

  2. Meistern Sie den Linux-ls-Befehl

  3. Linux-ps-Befehl

  4. Der Befehl locate unter Linux

  5. Eine Anleitung zum Linux-Befehl „Suchen“.

Der Linux-Top-Befehl

So verwenden Sie den fd-Befehl auf einem Linux-System

So erstellen Sie Dateien in einem Linux-System:Ein ultimativer Leitfaden

Ein praktischer Leitfaden für den Chroot-Befehl unter Linux

Eine Anleitung zum Atop-Befehl in Linux

Der Befehl System Activity Reporter (sar) in Linux