Während der Arbeit an der Linux-Befehlszeile kann es vorkommen, dass Sie prozessbezogene Details überprüfen möchten, z. B. welcher Prozess die CPU oder den Arbeitsspeicher am meisten verbraucht? Nun, es gibt einen Befehl namens top, mit dem Sie dies ganz einfach tun können. In diesem Tutorial werden wir dieses Tool anhand einiger leicht verständlicher Beispiele besprechen.
Aber bevor wir das tun, ist es erwähnenswert, dass alle in diesem Artikel erwähnten Beispiele auf einem Ubuntu 16.04 LTS-Rechner getestet wurden.
Linux-Top-Befehl
Der oberste Befehl zeigt eine Liste von Prozessen oder Threads an, die derzeit vom Linux-Kernel verwaltet werden, zusammen mit nützlichen Informationen zu ihnen. Es folgt die Syntax des Tools:
top [options]
Und hier ist, was die Manpage des Tools darüber sagt:
The top program provides a dynamic real-time view of a running
system. It can display system summary information as well as a
list of processes or threads currently being managed by the Linux
kernel. The types of system summary information shown and the
types, order and size of information displayed for processes are
all user configurable and that configuration can be made persis?
tent across restarts.
The program provides a limited interactive interface for process
manipulation as well as a much more extensive interface for per?
sonal configuration -- encompassing every aspect of its opera?
tion.
Im Folgenden finden Sie einige Beispiele im Q&A-Stil, die Ihnen eine gute Vorstellung davon vermitteln sollen, wie der oberste Befehl funktioniert.
Q1. Wie benutzt man top?
Ganz einfach, führen Sie einfach den 'top'-Befehl ohne jede Option aus:
top
Hier ist die Ausgabe, die es auf meinem System erzeugt hat:
Beachten Sie, dass das, was Sie auf dem Screenshot sehen, nur eine Momentaufnahme der erzeugten Echtzeitausgabe ist (die sich nach einem festgelegten Intervall ändert).
Q2. Wie ist die Ausgabe des obersten Befehls zu verstehen?
Beginnen wir mit der ersten Zeile. Es enthält Einträge für (in dieser Reihenfolge), aktuelle Uhrzeit, Dauer, seit das System in Betrieb ist und läuft, aktive Benutzersitzungen und durchschnittliche Belastung des Systems (jeweils für die letzten 1 Minute, 5 Minuten und 15 Minuten).
Die zweite Zeile enthält Informationen (in dieser Reihenfolge) über die Gesamtzahl der Prozesse, die Anzahl der laufenden Prozesse, die Anzahl der schlafenden Prozesse, die Anzahl der gestoppten Prozesse und die Anzahl der Prozesse im Zombie-Zustand.
Die dritte Zeile enthält Informationen zur CPU-Auslastung. Im Folgenden sind die Details aufgeführt:
us, user : time running un-niced user processesvon dieser VM gestohlen
sy, system : time running kernel processes
ni, nice : time running niced user processes
id, idle : time spent in the kernel idle handler
wa, IO-wait : time waiting for I/O completion
hi : time spent servicing hardware interrupts
si : time spent servicing software interrupts
st : time stolen from this vm by the hypervisor
Die nächsten beiden Zeilen zeigen Informationen zur RAM- und Swap-Speichernutzung. Und schließlich kommen prozessbezogene Informationen, die aus (in dieser Reihenfolge) Prozess-ID, Benutzer, dem der Prozess gehört, Priorität des Prozesses, nettem Wert des Prozesses, virtuellem, physischem und gemeinsam genutztem Speicher, der vom Prozess verwendet wird, Prozessstatus bestehen (Sleeping, Running oder Zombie), CPU- und RAM-Auslastung, Zeit der Aktivität und Befehl, der den Prozess initiiert hat.
Q3. Wie beendet man einen Prozess innerhalb der Top-Ausgabe?
Das ist ziemlich einfach - drücken Sie einfach 'k' und top fragt Sie nach der PID des Prozesses, den Sie beenden möchten. Sie sehen eine Meldung ähnlich der folgenden, die direkt über der Zeile erscheint, die Prozessspaltenüberschriften enthält:
PID to signal/kill [default pid = 3397]
Wie Sie sehen, können Sie entweder die Prozess-ID eingeben oder standardmäßig wird top versuchen, den ersten Prozess in der Liste zu beenden (durch Senden von SIGTERM). Sobald das Signal gesendet wurde, wird eine Nachricht ähnlich der folgenden erzeugt.
Send pid 3007 signal [15/sigterm]
Q4. Wie ändere ich die Priorität eines Prozesses?
So wie 'k' zum Töten ist, können Sie 'r' drücken, falls Sie die Priorität eines Prozesses ändern möchten (oder Sie ihn renicieren möchten). Das Drücken von 'r' erzeugt eine Meldung ähnlich der folgenden:
PID to renice [default pid = 3397]
Geben Sie also entweder eine PID ein oder top versucht standardmäßig, die Priorität des ersten Prozesses in der Liste zu ändern. Zum Beispiel habe ich eine PID übergeben und mich dann von oben nach dem neuen netten Wert gefragt.
Renice PID 2665 to value
Geben Sie einfach einen Wert ein und drücken Sie die Eingabetaste, und Sie werden sehen, dass der schöne Wert für den betreffenden Prozess geändert wird.
Q5. Wie ändere ich die Aktualisierungsrate des obersten Befehls?
Standardmäßig aktualisiert top die Ausgabe alle 3 Sekunden, aber Sie können dies optimieren, indem Sie „d“ drücken. Der Befehl fordert Sie auf, den neuen Verzögerungswert einzugeben:
Change delay from 3.0 toändern
Geben Sie einfach den Wert ein und drücken Sie die Eingabetaste. Das ist es.
Q6. Wie beschränke ich die Ausgabe des oberen Befehls auf einen Benutzer?
Standardmäßig zeigt der Befehl top alle Prozesse an. Sie können die Ausgabe jedoch auf einen bestimmten Benutzer beschränken, indem Sie 'u' drücken.
Which user (blank for all)
Geben Sie einfach den Benutzernamen in die obige Zeile ein und drücken Sie die Eingabetaste, und Sie werden sehen, dass die Ausgabe nur die Prozesse enthält, die dem Benutzer gehören, dessen Namen Sie eingegeben haben.
Ich habe zum Beispiel „root“ eingegeben und hier ist die Ausgabe:
F7. Wie macht man den Top-Display-Complete-Befehl zusammen mit Argumenten?
Dies kann durch Drücken von 'c' erfolgen. Hier ist ein Beispiel:
So können Sie jetzt den vollständigen Befehlspfad sowie die Befehlszeilenargumente in der Ausgabe sehen.
Q8. Wie erhalte ich Hilfe zu interaktiven Top-Befehlen?
Um Hilfe zu interaktiven Top-Befehlen zu erhalten, drücken Sie 'h'. In der Ausgabe sehen Sie verfügbare Befehle und was sie tun. Folgendes wurde beispielsweise auf meinem System angezeigt, als ich „h“ drückte.
Schlussfolgerung
Wir haben hier nur an der Oberfläche gekratzt. Der oberste Befehl bietet viel mehr Funktionen. Wenn Sie verstanden haben, was wir in diesem Artikel besprochen haben, und mit dem Üben fertig sind, gehen Sie zur oberen Manpage, um mehr darüber zu erfahren.