Prozesszustände und -lebenszyklen mit ps und top verstehen
In diesem Schritt lernen Sie die Prozesszustände und ihren Lebenszyklus unter Linux kennen. Das Verständnis der Prozesszustände ist entscheidend für die effektive Überwachung und Verwaltung von Systemressourcen. Sie werden die Befehle ps
und top
verwenden, um Prozesse und deren Zustände zu beobachten.
Jeder Prozess in Linux hat einen Zustand, der seine aktuelle Aktivität beschreibt. Diese Zustände werden vom Kernel definiert und geben an, ob ein Prozess läuft, schläft, angehalten ist oder sich in anderen Zuständen befindet.
Beginnen wir mit der Untersuchung der Prozesszustände mithilfe des Befehls ps
. Der Befehl ps
liefert einen Momentaufnahme der aktuellen Prozesse.
Öffnen Sie zunächst Ihr Terminal. Sie können dies tun, indem Sie auf das Terminal-Symbol auf dem Desktop klicken oder durch Drücken von Strg+Alt+T
. Ihr aktuelles Arbeitsverzeichnis ist ~/project
.
Um alle auf Ihrem System laufenden Prozesse anzuzeigen, einschließlich derer ohne Steuerterminal, verwenden Sie den Befehl ps aux
. Die Option aux
zeigt Prozesse aller Benutzer (a
), Prozesse ohne Steuerterminal (x
) und ein benutzerorientiertes Format (u
) an.
ps aux
Sie sehen eine lange Liste von Prozessen. Achten Sie auf die Spalte STAT
, die den Zustand jedes Prozesses anzeigt. Häufige Zustände, die Sie beobachten könnten, sind:
R
: Laufend oder ausführbar (auf der CPU oder wartet auf Ausführung)
S
: Unterbrechbarer Schlaf (wartet auf das Abschluss eines Ereignisses)
D
: Ununterbrechbarer Schlaf (wartet auf E/A, kann nicht unterbrochen werden)
T
: Angehalten (durch ein Signal angehalten)
Z
: Zombie (Prozess beendet, aber der Elternprozess hat seinen Beendigungsstatus noch nicht eingesammelt)
BENUTZER PID %CPU %MEM VSZ RSS TTY STAT START ZEIT BEREITSTELLUNG
root 1 0.0 0.2 171820 16140 ? Ss HH:MM 0:01 /usr/lib/systemd/systemd ...
root 2 0.0 0.0 0 0 ? S HH:MM 0:00 [kthreadd]
labex 3448 0.0 0.2 266904 3836 pts/0 R+ HH:MM 0:00 ps aux
...Ausgabe ausgelassen...
Als Nächstes verwenden wir den Befehl ps -ef
. Dieser Befehl liefert eine vollständige Liste (f
) aller Prozesse (e
) und zeigt weitere Details wie die Prozess-ID des Elternprozesses (PPID
), die CPU-Auslastung (C
), die Startzeit (STIME
) und den Befehl (CMD
) an.
ps -ef
Diese Ausgabe wird häufig verwendet, um die Eltern-Kind-Beziehungen zwischen Prozessen zu sehen, obwohl sie keine explizite Baumstruktur anzeigt.
UID PID PPID C STIME TTY ZEIT CMD
root 1 0 0 HH:MM ? 00:00:01 /usr/lib/systemd/systemd ...
root 2 0 0 HH:MM ? 00:00:00 [kthreadd]
root 3 2 0 HH:MM ? 00:00:00 [rcu_gp]
...Ausgabe ausgelassen...
Um die Prozesshierarchie zu visualisieren, können Sie die Option ps --forest
verwenden. Dadurch werden die Prozesse in einem Baumformat angezeigt, was es einfacher macht, zu verstehen, welche Prozesse andere Prozesse gestartet haben.
ps --forest
Dieser Befehl ist besonders nützlich für die Fehlersuche und das Verständnis der Struktur verschiedener Dienste und Anwendungen auf Ihrem System.
PID TTY ZEIT CMD
2768 pts/0 00:00:00 bash
5947 pts/0 00:00:00 \_ sleep 10000
6377 pts/0 00:00:00 \_ ps --forest
...Ausgabe ausgelassen...
Nun untersuchen wir den Befehl top
, der eine dynamische Echtzeitansicht eines laufenden Systems bietet. Er zeigt eine Zusammenfassung der Systeminformationen und eine Liste der Prozesse oder Threads an, die derzeit vom Linux-Kernel verwaltet werden.
Führen Sie den Befehl top
aus:
top
Sie sehen eine interaktive Anzeige. Der obere Abschnitt enthält Systemzusammenfassungsinformationen, einschließlich Betriebszeit, durchschnittliche Last, Aufgabenübersicht, CPU-Statistiken und Speichernutzung. Der untere Abschnitt listet einzelne Prozesse auf, standardmäßig nach CPU-Auslastung sortiert.
In der Ausgabe von top
beobachten Sie die Spalte S
für Prozesszustände, ähnlich wie bei ps
. Sie können auch %CPU
(CPU-Auslastungsprozentsatz) und %MEM
(Speichernutzungsprozentsatz) für jeden Prozess sehen.
top - HH:MM:SS System läuft seit DD min, X Benutzer, durchschnittliche Last: X.XX, X.XX, X.XX
Aufgaben: XXX gesamt, X laufend, XXX schlafend, X angehalten, X Zombie
%CPU(s): X.X us, X.X sy, X.X ni, XX.X id, X.X wa, X.X hi, X.X si, X.X st
MiB Speicher: XXXX.X gesamt, XXXX.X frei, XXX.X verwendet, XXX.X buff/cache
MiB Swap: XXXX.X gesamt, XXXX.X frei, X.X verwendet. XXXX.X verfügbarer Speicher
PID BENUTZER PR NI VIRT RES SHR S %CPU %MEM ZEIT+ BEREITSTELLUNG
XXXX labex 20 0 XXXXXX XXXX XXXX R X.X X.X 0:00.0X top
...Ausgabe ausgelassen...
Während top
ausgeführt wird, können Sie q
drücken, um den Befehl zu beenden und zum Terminal-Eingabeaufforderer zurückzukehren.
Das Verständnis dieser Befehle und der von ihnen bereitgestellten Informationen ist grundlegend für die Überwachung und Fehlerbehebung von Prozessen in einem Linux-System.