top ist der klassische Live-Prozess-Monitor unter Linux — ein interaktives Werkzeug aus dem procps-Paket, das auf praktisch jedem Linux-System sofort vorhanden ist. Es zeigt eine kontinuierlich aktualisierte Liste laufender Prozesse zusammen mit Last-, CPU- und Speicher-Kennzahlen. Wer einen Server oder Desktop bewusst administriert, kommt an top nicht vorbei: kein Setup, keine Abhängigkeiten, läuft im SSH-Fenster genauso wie auf der lokalen Konsole.
Was top macht
top öffnet eine interaktive Vollbild-Ansicht im Terminal und listet die laufenden Prozesse, standardmäßig sortiert nach CPU-Verbrauch absteigend. Die Anzeige wird per Default alle 3 Sekunden aktualisiert; Header-Zeilen oben fassen Systemlast, Task-Verteilung, CPU-Auslastung und Speicher zusammen, darunter folgt die eigentliche Prozessliste.
Im Gegensatz zu modernen Alternativen wie htop oder btop gehört top zum Standard-Userland praktisch jeder Distribution. Es ist deshalb das verlässliche Werkzeug, wenn auf einem fremden Server schnell ein Bild vom Zustand des Systems gebraucht wird — ohne erst Pakete nachzuinstallieren.
topBeendet wird top mit der Taste q.
Header-Zeilen interpretieren
Der Kopfbereich von top umfasst fünf bis sechs Zeilen, die jeweils einen Aspekt des Systemzustands zusammenfassen. Wer diese Zeilen lesen kann, sieht binnen Sekunden, wo es klemmt.
| Zeile | Inhalt | Bedeutung |
|---|---|---|
| top | Uhrzeit, Uptime, User, Load Average | Zustand auf einen Blick |
| Tasks | total, running, sleeping, stopped, zombie | Wie viele Prozesse, in welchem Zustand |
| %Cpu(s) | us, sy, ni, id, wa, hi, si, st | Wofür die CPU Zeit aufwendet |
| MiB Mem | total, free, used, buff/cache | RAM-Verteilung |
| MiB Swap | total, free, used, avail Mem | Swap und tatsächlich verfügbarer Speicher |
Die Load Average zeigt drei Werte für die letzten 1, 5 und 15 Minuten. Sie ist als gleitender Durchschnitt der Run-Queue zu verstehen, also der Anzahl von Prozessen, die laufen oder auf CPU warten. Auf einem 4-Kern-System bedeutet 4.0 „voll ausgelastet”, 8.0 heißt „doppelt überbucht”.
Die CPU-Aufschlüsselung ist besonders aufschlussreich:
| Feld | Bedeutung |
|---|---|
us | User-Space-Code (normale Anwendungen) |
sy | Kernel-Space (Syscalls, Treiber) |
ni | User-Space mit modifizierter Nice-Priorität |
id | Idle — CPU langweilt sich |
wa | I/O-Wait — CPU wartet auf Disk oder Netzwerk |
hi | Hardware-Interrupts |
si | Software-Interrupts |
st | Steal-Time (Hypervisor klaut CPU in VM-Umgebungen) |
Hohe wa-Werte deuten auf Disk-Bottlenecks, hohe st-Werte auf überbuchte virtuelle Hosts. Der Memory-Bereich unterscheidet zwischen used, free und buff/cache — letzterer ist technisch belegt, aber jederzeit für andere Prozesse freigebbar. Für die echte Reserve interessant: avail Mem in der Swap-Zeile.
Spalten verstehen
Unterhalb der Header folgt die eigentliche Prozesstabelle. Die wichtigsten Default-Spalten:
| Spalte | Bedeutung |
|---|---|
PID | Prozess-ID |
USER | Eigentümer des Prozesses |
PR | Scheduling-Priorität (niedriger ist höher) |
NI | Nice-Wert (-20 bis +19, Default 0) |
VIRT | Virtueller Speicher (alles, was der Prozess adressieren könnte) |
RES | Resident Set Size (tatsächlich im RAM) |
SHR | Shared Memory (z. B. gemeinsam genutzte Bibliotheken) |
S | Status: R running, S sleeping, D uninterruptible, Z zombie, T stopped |
%CPU | Anteil an einer CPU seit letztem Refresh |
%MEM | Anteil am physischen Speicher |
TIME+ | Aufsummierte CPU-Zeit (mit Hundertstelsekunden) |
COMMAND | Programmname (oder volle Cmd-Line mit c) |
%CPU kann auf Multi-Core-Systemen Werte über 100 % erreichen — ein Prozess mit acht aktiven Threads auf einem 8-Kern-System darf bei voller Last bis zu 800 % anzeigen.
Interaktive Tasten
top ist primär interaktiv — die meiste Zeit verbringt man darin, mit Tastenkürzeln zu sortieren, zu filtern und gezielt einzugreifen.
| Taste | Wirkung |
|---|---|
q | Beenden |
h | Hilfe-Übersicht |
k | Prozess killen (PID + Signal abfragen) |
r | Renice (PID + neuer Nice-Wert) |
M | Nach %MEM sortieren |
P | Nach %CPU sortieren (Default) |
c | Volle Kommandozeile statt nur Programmname |
1 | Per-CPU-Auslastung statt Gesamtwert |
Z | Farbschema umschalten |
W | Aktuelle Konfiguration in ~/.toprc schreiben |
< / > | Sortier-Spalte wechseln |
f / o | Felder konfigurieren (zeigen, ausblenden, sortieren) |
u | Nach User filtern |
R | Sort-Reihenfolge umkehren |
H | Threads statt nur Prozesse anzeigen |
Diese Tastenkürzel wirken sofort und ohne Bestätigung — M und P sind die mit Abstand am häufigsten gebrauchten und wechseln zwischen den beiden klassischen Sortier-Achsen.
Command-Line-Optionen
Auch ohne interaktive Steuerung lässt sich top über Argumente steuern. Das ist besonders nützlich, um direkt mit der gewünschten Ansicht zu starten.
| Option | Wirkung |
|---|---|
-u USER | Nur Prozesse eines Users anzeigen |
-p PID,PID,… | Nur diese PIDs beobachten |
-d SEC | Refresh-Intervall in Sekunden (auch Dezimal: -d 0.5) |
-n N | Nach N Iterationen beenden |
-b | Batch-Mode (nicht-interaktiv, pipelinetauglich) |
-H | Threads statt Prozesse |
-o FELD | Initiale Sortier-Spalte setzen, z. B. -o %MEM |
-c | Volle Cmd-Line in der COMMAND-Spalte |
top -u www-data -d 1Sehr kurze Refresh-Intervalle (-d 0.5 oder kleiner) treiben den Eigenverbrauch von top nach oben — auf produktiven Servern eher die Finger davon lassen.
Konfiguration speichern
Wer immer dieselbe Sortierung, Spalten-Auswahl oder Farbgebung nutzt, kann das einmalig in der interaktiven Session einstellen und dann mit W in die Datei ~/.toprc schreiben. Beim nächsten Start liest top diese Datei automatisch ein.
In ~/.toprc landen unter anderem die Sortier-Spalte, sichtbare und ausgeblendete Felder, das Farbschema, das Refresh-Intervall sowie die Per-CPU-Anzeige. Die Datei lässt sich auch von Hand editieren, ist aber von top selbst nicht „menschenfreundlich” gestaltet — der zuverlässigste Weg ist f, o, </>, Z und am Ende W.
rm ~/.toprcBatch-Mode für Skripte
Mit -b läuft top nicht-interaktiv und schreibt seine Ausgabe als reinen Text auf STDOUT — ideal zum Pipen, Greppen oder Mitloggen. In Kombination mit -n 1 ergibt das einen einzelnen Snapshot.
top -bn1 | head -n 12top -bn1 liefert genau einen Frame, head -n 12 schneidet Header plus ein paar Zeilen Prozessliste ab. Der Output lässt sich problemlos durch awk, grep oder sort weiterverarbeiten.
top -bn1 | awk 'NR>7 {print $1, $9, $12}' | head -n 5NR>7 überspringt die Header-Zeilen, $1, $9 und $12 sind PID, %CPU und COMMAND. Damit lassen sich klassische Monitoring-Pipelines bauen, die ohne zusätzliche Tools auskommen.
Praxis-Patterns
top -u www-dataBegrenzt die Anzeige auf alle Prozesse eines bestimmten Nutzers — perfekt für Webserver-Hosts, auf denen mehrere Service-User parallel laufen.
top -p $(pgrep -f myapp | head -1)pgrep -f myapp liefert PIDs aller Prozesse, die myapp im Kommando enthalten; head -1 nimmt die erste. Die Command-Substitution reicht sie an top -p weiter — ideal, um einen einzelnen Service über längere Zeit zu beobachten.
top -bn1 > snapshot-$(date +%F-%H%M).txtSchreibt einen Zeitstempel-Snapshot in eine Datei. Praktisch, um vor und nach einem Lasttest oder Deploy einen Vergleichspunkt zu haben.
top -HMit -H werden statt Prozessen einzelne Threads gezeigt — für Multi-Threaded-Anwendungen wie JVM-Prozesse oder Datenbanken oft die einzige Möglichkeit, den heißen Thread zu finden.
top -bn1 -o %MEM | head -n 17-o %MEM setzt die Sortierung schon beim Start auf Memory; head schneidet Header + Top-10-Prozesse ab. Klassisch für „wer frisst den RAM auf?”-Analysen aus Cron-Jobs heraus.
Besonderheiten
Load Average ist keine CPU-Auslastung
Der Load-Average misst die Länge der Run-Queue, also wie viele Prozesse laufen oder lauffähig sind. Auf Linux zählen zusätzlich Prozesse im Zustand D (uninterruptible I/O) mit. Hohe Load bei niedriger CPU-Nutzung deutet damit auf Disk- oder Netzwerk-Bottlenecks — nicht auf CPU-Sättigung. Erst der Vergleich von Load und %Cpu(s) zeigt die Wahrheit.
top selbst frisst CPU
Der Refresh-Zyklus liest jedes Mal alle /proc/PID-Verzeichnisse durch und rendert die Tabelle neu. Bei sehr kurzem -d (etwa 0.5s) kann top auf einem busy System spürbar Last erzeugen — auf einem mageren VPS gerne mal 5–10 % CPU. Auf Produktivsystemen lieber bei den 3 Sekunden Default bleiben.
Default-Refresh kann Spikes verschlucken
Drei Sekunden sind eine Ewigkeit für moderne CPUs. Ein Prozess, der für 200 ms auf 100 % CPU geht und dann wieder schläft, taucht in der Mittelung womöglich gar nicht auf. Wer kurze Spitzen jagen will, kombiniert top -d 1 mit Tools wie perf, pidstat oder strace.
1-Toggle ist auf Multi-Core ein Game-Changer
Standardmäßig zeigt top einen Mittelwert über alle Kerne. Mit der Taste 1 werden alle CPUs einzeln aufgeschlüsselt. Auf einem 16-Kern-Server sieht man so sofort, ob Last gleichmäßig verteilt ist oder ob ein einzelner Kern bei 100 % steht, während die anderen schlafen — oft ein Hinweis auf Single-Threaded-Bottlenecks.
H zeigt Threads, die sich sonst verstecken
Ohne -H bzw. die H-Taste fasst top alle Threads eines Prozesses zu einer Zeile zusammen. Programme wie Java-Applikationen, Postgres oder Chromium starten Dutzende bis Hunderte Threads — die schuldige Komponente erkennt man oft erst in der Thread-Ansicht, weil Thread-IDs in /proc wie eigene Prozesse behandelt werden.
R toggelt die Sortier-Reihenfolge
Der Default sortiert absteigend, sodass die hungrigsten Prozesse oben stehen. Mit R dreht sich die Sortierung um — nützlich, um sich anzusehen, was am wenigsten verbraucht (etwa Idle-Daemons), oder um den Default für eigene Skripte umzukehren.
Batch-Mode harmoniert exzellent mit awk
Weil top -b seine Ausgabe in stabilen Spalten produziert, lässt sich der Output mit awk, grep oder sed elegant filtern. Klassische Monitoring-Skripte greifen z. B. mit awk ‘NR>7’ direkt auf die Prozessliste zu und werten %CPU oder %MEM als Zahl aus, ohne zusätzliche Tools.
Alle Defaults sind in ~/.toprc persistierbar
Wer sich an die Tasten f, o, <, >, Z und 1 gewöhnt hat, vergisst gerne die letzte: W. Sie schreibt die aktuelle Session in ~/.toprc — Sortierung, Spalten, Farben, Refresh, Per-CPU-Anzeige. Beim nächsten Login startet top direkt mit dem persönlichen Setup.
Weiterführende Ressourcen
Externe Quellen
- top(1) – Manpage (man7.org) — Vollständige Optionsreferenz und Tastenkürzel
- procps-ng auf GitLab — Upstream-Projekt von
top,ps,freeund Co. - Arch Wiki: top — Praktische Hinweise und Tipps zur Nutzung
- Brendan Gregg: Linux Performance — Übersicht über Performance-Tools, in denen
topder Einstieg ist - Linux Insides: Load Average — Hintergrund zur Berechnung des Load-Average
Verwandte Artikel
- ps – Prozess-Snapshot — Komplementär: einmalige statische Auflistung
- htop – Komfort-Variante von top — Farben, Maus-Steuerung, Tree-View
- btop – Moderner Resource-Monitor — Grafische TUI mit Netzwerk und Disk
- kill – Signale an Prozesse senden — Was
kintopim Hintergrund tut - Prozess-Modell von Linux — Wie der Kernel Prozesse verwaltet