Befehle zur Auflistung von Prozessen
Um die aktiven Prozesse auf deinem Linux-System aufzulisten, stehen dir mehrere nützliche Befehle zur Verfügung.
ps-Befehl
Der Befehl ps
ist das grundlegende Dienstprogramm zum Anzeigen von Prozessinformationen. Er listet alle aktiven Prozesse zusammen mit ihren Prozess-IDs (PIDs), Benutzern, Startzeiten und Befehlszeilenargumenten auf.
ps
top-Befehl
Der Befehl top
bietet eine interaktive Ansicht der laufenden Prozesse, die in Echtzeit aktualisiert werden. Er zeigt eine Liste der Prozesse sortiert nach CPU-Auslastung oder Speichernutzung an.
top
pstree-Befehl
Der Befehl pstree
visualisiert die Prozesshierarchie im System als Baumstruktur. Dies kann dir helfen, die Beziehungen zwischen Eltern- und Kindprozessen zu visualisieren.
pstree
pgrep-Befehl
Der Befehl pgrep
listet die PIDs aller Prozesse auf, die den angegebenen Suchbegriff in ihren Befehlszeilenargumenten enthalten.
pgrep <Suchbegriff>
pidof-Befehl
Der Befehl pidof
ist ähnlich wie pgrep
, listet jedoch nur die PID des ersten passenden Prozesses auf.
pidof <Suchbegriff>
Weitere Optionen
-
-e
(ps, pstree): Listet alle Prozesse auf. -
-f
(ps): Bietet eine detailliertere Ausgabe mit zusätzlichen Spalten. -
-a
(top): Zeigt alle Prozesse an, einschließlich inaktiver. -
-H
(pstree): Zeigt die hierarchischen Beziehungen an.
Filterung von Prozessen
Um die Liste der Prozesse auf bestimmte Kriterien einzugrenzen, kannst du folgende Filteroptionen nutzen:
Filterung nach Benutzername
Mit der Option -u <Benutzername>
kannst du alle Prozesse anzeigen, die von einem bestimmten Benutzer ausgeführt werden. Beispiel: ps -u root
zeigt alle Prozesse an, die vom Benutzer "root" ausgeführt werden.
Filterung nach Prozessname
Wenn du nur Prozesse mit einem bestimmten Namen auflisten möchtest, verwende die Option -f
. Diese Option unterstützt reguläre Ausdrücke, sodass du beispielsweise folgenden Befehl verwenden kannst, um alle Prozesse mit dem Namen "bash" aufzulisten: ps -f | grep "bash"
.
Filterung nach PID
Um einen bestimmten Prozess anhand seiner Prozess-ID (PID) zu filtern, verwende die Option -p <PID>
. Beispiel: ps -p 1
zeigt den Prozess mit der PID 1 an.
Filterung nach Befehl
Die Option -c <Befehl>
listet alle Prozesse auf, die einen bestimmten Befehl ausführen. Beispiel: ps -c top
zeigt alle Prozesse, die das Programm "top" ausführen.
Filterung nach Status
Um Prozesse basierend auf ihrem Status zu filtern, verwende die Option -s <Status>
. Gültige Status sind beispielsweise "running", "sleeping", "stopped" und "zombie". Beispiel: ps -s sleeping
listet alle Prozesse auf, die sich im Schlafzustand befinden.
Filterung nach Ressourcennutzung
Um Prozesse basierend auf ihrer Ressourcennutzung zu filtern, kannst du die Optionen -rss <Speichergrenze>
und -cpu <CPU-Auslastungsgrenze>
verwenden. Beispiel: ps -rss 1000
listet alle Prozesse auf, die mehr als 1000 KB Speicher verwenden.
Sortierung von Prozessen
Die Sortierung von Prozessen ist unerlässlich, um in der Prozessliste spezifische Prozesse schnell zu finden. Linux bietet verschiedene Möglichkeiten, Prozesse nach verschiedenen Kriterien zu sortieren.
Sortierung nach Prozessinformationen
Die meisten Befehle zur Auflistung von Prozessen ermöglichen die Sortierung nach Prozessinformationen wie:
- PID (Prozess-ID): Sortiert Prozesse nach ihrer eindeutigen ID.
- Benutzer: Sortiert Prozesse nach dem Benutzer, der sie gestartet hat.
- Gruppierung: Sortiert Prozesse nach der Gruppe, zu der sie gehören.
- Befehlsname: Sortiert Prozesse nach dem Namen des ausgeführten Befehls.
Beispielbefehle
Um beispielsweise Prozesse nach ihrem Befehlsname zu sortieren, kannst du folgenden Befehl verwenden:
ps aux | sort -k 11
Dieser Befehl sortiert die Prozesse nach dem elften Feld, das den Befehlsname enthält.
Sortierung nach numerischen Werten
Neben der Sortierung nach Zeichenfolgen kannst du Prozesse auch nach numerischen Werten wie z. B. der Prozessor- oder Speichernutzung sortieren.
Sortierung nach Prozessor- oder Speichernutzung
Mit dem Befehl ps
kannst du Prozesse nach ihrer Prozessor- oder Speichernutzung sortieren, indem du den Parameter -o
verwendest. Beispielsweise sortiert folgender Befehl Prozesse nach ihrer Prozessor-Nutzung in absteigender Reihenfolge:
ps aux | sort -nrk 3
Das dritte Feld (%CPU
) gibt die Prozessor-Nutzung in Prozent an. Durch die Verwendung der Option -nr
wird die Ausgabe numerisch in absteigender Reihenfolge sortiert.
Sortierung nach mehreren Kriterien
Du kannst Prozesse auch nach mehreren Kriterien sortieren. Beispielsweise sortiert folgender Befehl Prozesse nach Benutzer und PID innerhalb jedes Benutzers:
ps aux | sort -t : -k 1,1 -k 2,2
Dieser Befehl verwendet den Parameter -t
(Trennzeichen) und den Doppelpunkt als Trennzeichen zwischen Benutzer und PID. Die Optionen -k
geben das Sortierfeld und die Sortierreihenfolge an.
Prozessdetails anzeigen
Wenn du mehr als nur eine grundlegende Liste von Prozessen benötigst, kannst du den Befehl ps
verwenden, um detailliertere Informationen über jeden Prozess anzuzeigen.
Erweiterte Prozessinformationen
Mit der Option -f
kannst du eine vollständige Liste der Prozessattribute anzeigen, darunter:
PID: Prozess-ID
USER: Benutzer, der den Prozess gestartet hat
PR: Priorität des Prozesses
NI: Nice-Wert des Prozesses
VIRT: Virtueller Speicher, der vom Prozess verwendet wird
RES: Residente Größe des Prozesses
SHR: Größe des gemeinsam genutzten Speichers
S: Prozessstatus
%CPU: Anteil der CPU-Zeit, die vom Prozess verwendet wird
%MEM: Anteil des Speichers, der vom Prozess verwendet wird
COMMAND: Name des vom Prozess ausgeführten Befehls
Filtern von Prozessdetails
Du kannst die Ausgabe von ps
mit der Option -F
filtern, um nur bestimmte Attribute anzuzeigen. Beispielsweise zeigt der folgende Befehl nur die Prozess-ID, den Benutzer und den ausgeführten Befehl:
ps -F pid,user,command
Sortieren von Prozessdetails
Du kannst die Ausgabe von ps
auch mit der Option -o
sortieren. Beispielsweise sortiert der folgende Befehl die Prozesse nach der CPU-Auslastung:
ps -o pid,user,command,%cpu
Tools für die Prozessverwaltung
Neben ps
gibt es eine Reihe anderer Tools, die du für die Prozessverwaltung verwenden kannst:
-
top
: Zeigt eine dynamische Echtzeitansicht der laufenden Prozesse -
htop
: Eine interaktive Textbenutzeroberfläche zur Prozessüberwachung -
atop
: Erfasst und analysiert historische Prozessdaten
Echtzeit-Prozessüberwachung
Die Echtzeit-Prozessüberwachung ermöglicht dir die kontinuierliche Überwachung der laufenden Prozesse in deinem Linux-System. Mit Hilfe spezieller Werkzeuge kannst du wichtige Systemdaten in Echtzeit abrufen und so potenzielle Probleme oder Leistungseinbrüche frühzeitig erkennen.
Tools für die Echtzeit-Prozessüberwachung
Es stehen verschiedene Tools für die Echtzeit-Prozessüberwachung unter Linux zur Verfügung, unter anderem:
- top: Ein interaktives Tool zur Echtzeitüberwachung der CPU- und Speicherauslastung aller laufenden Prozesse.
- htop: Eine erweiterte Version von top, die eine grafische Oberfläche und zusätzliche Funktionen wie die Prozesshierarchieanzeige bietet.
- psutil: Eine Python-Bibliothek zur Programmierung von Tools zur Echtzeit-Prozessüberwachung und -verwaltung.
Parameter für die Echtzeit-Prozessüberwachung
Bei der Echtzeit-Prozessüberwachung kannst du verschiedene Parameter überwachen, darunter:
- CPU-Auslastung: Der Prozentsatz der CPU-Zeit, die ein Prozess beansprucht.
- Speicherauslastung: Die Menge an physischem oder virtuellem Speicher, die ein Prozess nutzt.
- Festplatten-E/A: Die Rate, mit der ein Prozess Daten von oder auf die Festplatte schreibt oder liest.
- Netzwerknutzung: Die Bandbreite, die ein Prozess für die Netzwerkkommunikation verwendet.
Vorteile der Echtzeit-Prozessüberwachung
Die Echtzeit-Prozessüberwachung bietet zahlreiche Vorteile, darunter:
- Frühzeitige Erkennung von Problemen: Du kannst potenzielle Probleme oder Leistungseinbrüche erkennen, bevor sie zu größeren Problemen führen.
- Optimierung der Systemleistung: Du kannst die Ressourcennutzung der Prozesse überwachen und entsprechend anpassen, um die Systemleistung zu optimieren.
- Fehlerbehebung: Im Falle eines Systemabsturzes oder einer Fehlfunktion kannst du die von den Prozessen gesammelten Daten verwenden, um die Ursache des Problems zu ermitteln.
Wie du die Echtzeit-Prozessüberwachung verwendest
Um die Echtzeit-Prozessüberwachung zu verwenden, kannst du die oben genannten Tools wie folgt verwenden:
-
Starte das Werkzeug: Führe den Befehl
top
,htop
oderpsutil
in einem Terminalfenster aus. - Überwache die Prozesse: Das Tool zeigt eine Echtzeitliste der laufenden Prozesse an.
- Sortiere und filtere die Prozesse: Du kannst die Prozesse anhand verschiedener Kriterien wie CPU-Auslastung, Speichernutzung oder Prozessname sortieren und filtern.
- Details zu Prozessen anzeigen: Wähle einen Prozess aus und drücke die Eingabetaste, um detaillierte Informationen zu diesem Prozess anzuzeigen, einschließlich Startoptionen, Umgebungsvariablen und offenen Dateien.
Durch die Echtzeit-Prozessüberwachung kannst du die laufenden Prozesse in deinem Linux-System effektiv überwachen und mögliche Probleme frühzeitig erkennen und beheben.
Prozesshierarchie anzeigen
Die Prozesshierarchie unter Linux zeigt dir die Beziehungen zwischen Prozessen und ihren untergeordneten Prozessen (Kindern). Durch das Verstehen dieser Hierarchie kannst du sehen, welche Prozesse miteinander verbunden sind und wie sie Ressourcen gemeinsam nutzen.
Befehl pstree
Der Befehl pstree
ist ein praktisches Werkzeug zum Anzeigen der Prozesshierarchie in Baumform. Gib einfach pstree
in das Terminal ein, um eine Liste aller Prozesse und ihrer untergeordneten Prozesse anzuzeigen:
$ pstree
init
├─agetty
└─runlevel
├─agetty
├─crond
├─klogd
├─kmodd
├─ksoftirqd/0
├─ksoftirqd/1
Befehl ps axH
Eine weitere Möglichkeit, die Prozesshierarchie anzuzeigen, ist der Befehl ps axH
. Dieser Befehl gibt eine detailliertere Liste der Prozesse aus, einschließlich ihrer Eltern-Prozess-IDs (PPID):
$ ps axH
PID PPID USER STIME COMMAND
1 0 root 00:00:10 init
2 1 root 00:00:00 kthreadd
3 2 root 00:00:00 rcu_sched
34 1 root 00:00:00 udevmon
45 1 root 00:00:00 ksoftirqd/0
...
Hier siehst du, dass Prozess 34 ein Kind von Prozess 1 (init) ist, da seine PPID 1 ist.
Grafikwerkzeuge zur Prozesshierarchie
Neben Befehlen kannst du auch grafische Tools wie Process Hacker
oder htop
verwenden, um die Prozesshierarchie zu visualisieren. Diese Tools bieten eine benutzerfreundliche Oberfläche zum Durchsuchen und Interagieren mit Prozessen, einschließlich der Anzeige ihrer Hierarchie.
Warum ist die Anzeige der Prozesshierarchie wichtig?
Das Verstehen der Prozesshierarchie ist aus folgenden Gründen wichtig:
- Fehlersuche: Wenn ein Prozess Probleme verursacht, kann die Untersuchung seiner Hierarchie helfen, die zugrunde liegenden Ursachen zu identifizieren.
- Ressourcenverwaltung: Die Kenntnis der Beziehungen zwischen Prozessen hilft dir zu verstehen, wie Ressourcen genutzt und geteilt werden.
- Sicherheit: Die Visualisierung der Prozesshierarchie kann bei der Erkennung von schädlichen Prozessen oder Schwachstellen helfen.
Prozesse erstellen und ausführen
Unter Linux kannst du neue Prozesse mithilfe verschiedener Methoden erstellen und ausführen. Hier sind die gängigsten Ansätze:
fork() und exec()
Die Funktionen fork()
und exec()
bilden den grundlegenden Mechanismus zur Erstellung und Ausführung neuer Prozesse. fork()
dupliziert den aufrufenden Prozess und erstellt einen neuen Prozess mit derselben Kopie des Speichers. Der neue Prozess führt dann exec()
aus, um ein anderes Programm zu laden und auszuführen.
execlp() und execvp()
Diese Funktionen sind Varianten von exec()
, die es dir ermöglichen, ein Programm direkt auszuführen, ohne fork()
manuell aufzurufen. execlp()
sucht nach dem angegebenen Programm in einem festen Pfad, während execvp()
im PATH-Suchpfad danach sucht.
System() und popen()
Die Funktionen system()
und popen()
bieten eine bequemere Möglichkeit, Prozesse zu erstellen und auszuführen. system()
führt einen Befehl aus und wartet auf dessen Abschluss, während popen()
eine Pipe zum Lesen oder Schreiben aus einem Befehl erstellt.
Prozessverwaltungstools
Zusätzlich zu den oben genannten Funktionen gibt es mehrere Tools zur Prozessverwaltung, die dir bei der Erstellung und Ausführung von Prozessen helfen können:
- ps: Listet laufende Prozesse auf.
- top: Bietet eine Echtzeit-Ansicht der laufenden Prozesse und ihrer Ressourcennutzung.
- pstree: Zeigt die Prozesshierarchie an.
- nice: Ändert die Prozesspriorität.
- renice: Ändert die Priorität eines laufenden Prozesses.
Überlegungen zur Prozesserstellung
Wenn du Prozesse erstellst und ausführst, solltest du die folgenden Punkte beachten:
- Ressourcenverwaltung: Berücksichtige die Auswirkungen des Prozesses auf CPU-Zeit, Speicher und andere Systemressourcen.
- Prozesshierarchie: Prozesse können eine hierarchische Struktur bilden, die "Eltern"- und "Kind"-Prozesse umfasst.
- Prozesssicherheit: Stelle sicher, dass die von dir erstellten Prozesse die erforderlichen Berechtigungen und Zugriffssteuerungen haben.
Prozessor- und Speichernutzung von Prozessen
Als IT-Experte kannst du die Prozessor- und Speichernutzung von Prozessen unter Linux auf verschiedene Arten überwachen und verwalten.
Prozessor- und Speicherauslastung überwachen
Um die Prozessor- und Speichernutzung eines Prozesses anzuzeigen, verwende den Befehl top
. Dieser liefert eine Echtzeit-Ansicht der Ressourcennutzung durch Prozesse auf deinem System. Die Spalten "%CPU" und "%MEM" zeigen die Prozessor- bzw. Speichernutzung des jeweiligen Prozesses an.
Du kannst auch den Befehl ps
mit der Option -e
verwenden, um alle Prozesse und ihre Ressourcennutzung aufzulisten.
Prozesse nach Ressourcennutzung sortieren
Um die Prozesse nach Prozessor- oder Speichernutzung zu sortieren, verwende die Sortieroptionen von top
. Drücke Shift
+ >
, um nach CPU-Auslastung zu sortieren, oder Shift
+ <
, um nach Speichernutzung zu sortieren.
Prozesse verwalten
Um die Ressourcennutzung eines Prozesses zu verwalten, kannst du die folgenden Befehle verwenden:
-
nice
: Ändert die Priorität des Prozesses, um seine Ressourcennutzung anzupassen. -
renice
: Ändert die Priorität eines laufenden Prozesses. -
ulimit
: Setzt Grenzwerte für die Ressourcennutzung des Prozesses, wie z. B. die maximale Größe des Stacksegments oder die maximale Anzahl offener Dateien.
Weitere Tools für die Prozessverwaltung
Neben den bereits erwähnten Befehlen gibt es auch Tools von Drittanbietern, die bei der Verwaltung von Prozessen helfen können, wie z. B.:
- htop: Ein interaktives Prozessüberwachungswerkzeug mit einer benutzerfreundlichen Oberfläche.
- atop: Ein leistungsstarkes Tool zur Überwachung und Analyse der Systemleistung, einschließlich Prozessressourcennutzung.
- sysstat: Eine Suite von Tools zur Überwachung der Systemleistung, die auch Informationen zur Prozessnutzung bereitstellt.
Prozessprioritäten verwalten
Jeder Prozess unter Linux wird mit einer Priorität ausgeführt, die bestimmt, wie viele Ressourcen er im Vergleich zu anderen Prozessen erhält. Die Priorität wird durch eine Zahl von -20 bis 19 dargestellt, wobei -20 die niedrigste und 19 die höchste Priorität ist.
Prozesspriorität festlegen
Um die Priorität eines Prozesses festzulegen, kannst du den Befehl nice
verwenden. Die Syntax lautet:
nice -n PRIORITÄT BEFEHL
Dabei ersetzt PRIORITÄT
die gewünschte Priorität und BEFEHL
den auszuführenden Befehl.
Beispiel:
nice -n 15 ping google.com
Dieser Befehl führt den Befehl ping
mit einer Priorität von 15 aus.
Prozesspriorität anzeigen
Um die Priorität eines Prozesses anzuzeigen, kannst du den Befehl ps
verwenden. Die Syntax lautet:
ps -o pri,pid,comm
Dabei zeigt pri
die Priorität, pid
die Prozess-ID und comm
den Befehlsnamen an.
Beispiel:
ps -o pri,pid,comm
Ausgabe:
PRI PID COMMAND
5 2715 bash
5 2722 top
5 2724 ps
5 2768 ping
5 2769 python
Auswirkung der Prozesspriorität
Eine höhere Priorität bedeutet, dass ein Prozess mehr CPU-Zeit und Speicher erhält. Dies kann sich auf die Leistung anderer Prozesse auswirken, insbesondere wenn ein Prozess mit hoher Priorität viele Ressourcen verbraucht.
Umgekehrt erhält ein Prozess mit niedriger Priorität weniger Ressourcen und kann daher langsamer ausgeführt werden. Dies kann für Prozesse nützlich sein, die nicht zeitkritisch sind oder im Hintergrund ausgeführt werden.
Best Practices für die Prozesspriorität
- Verwende eine hohe Priorität nur für Prozesse, die wirklich zeitkritisch sind.
- Verwende eine niedrige Priorität für Prozesse, die nicht zeitkritisch sind oder im Hintergrund ausgeführt werden.
- Überwache die Prozessprioritäten regelmäßig, um sicherzustellen, dass sie angemessen eingestellt sind.
Prozesse in Zonen verschieben
In bestimmten Fällen kann es sinnvoll sein, einen Prozess von seiner aktuellen Zone in eine andere zu verschieben. Dies kann z. B. zur Verbesserung der Leistung oder Sicherheit erforderlich sein.
Gründe für das Verschieben von Prozessen in Zonen
Es gibt verschiedene Gründe, warum du einen Prozess in eine andere Zone verschieben möchtest:
- Leistungsverbesserung: Wenn ein Prozess eine Zone zu sehr beansprucht, kannst du ihn in eine weniger ausgelastete Zone verschieben, um die Leistung zu verbessern.
- Sicherheitsverbesserung: Bestimmte Prozesse können für das System gefährlich sein. Durch das Verschieben solcher Prozesse in eine isolierte Zone kannst du die Sicherheitsrisiken reduzieren.
- Ressourcenverwaltung: Zonen können dazu verwendet werden, die Ressourcenaufteilung zu verwalten. Indem du Prozesse in verschiedene Zonen verschiebst, kannst du sicherstellen, dass jeder Zone genügend Ressourcen zur Verfügung stehen.
Verschieben von Prozessen in Zonen
Um einen Prozess in eine andere Zone zu verschieben, kannst du den Befehl cgroups
verwenden. Mit diesem Befehl kannst du Prozesse zu bestimmten Zonen hinzufügen oder daraus entfernen.
Die Syntax des Befehls lautet folgendermaßen:
cgroups attach pid zone
Dabei gilt:
-
pid
ist die Prozess-ID des Prozesses, den du verschieben möchtest. -
zone
ist der Name der Zone, in die du den Prozess verschieben möchtest.
Zonen verwalten
Du kannst Zonen mit dem Befehl systemd-cgls
verwalten. Mit diesem Befehl kannst du die Liste der verfügbaren Zonen anzeigen, Zonen erstellen und löschen sowie Prozesse zu Zonen hinzufügen oder daraus entfernen.
Die Syntax des Befehls lautet folgendermaßen:
systemd-cgls [options]
Die gängigsten Optionen sind:
-
-l
: Listet die verfügbaren Zonen auf. -
-a
: Fügt einen Prozess zu einer Zone hinzu. -
-r
: Entfernt einen Prozess aus einer Zone. -
-c
: Erstellt eine neue Zone. -
-d
: Löscht eine Zone.
Beispiel
Um einen Prozess mit der Prozess-ID 12345 in die Zone myzone
zu verschieben, kannst du den folgenden Befehl verwenden:
cgroups attach 12345 myzone
Um zu überprüfen, ob der Prozess erfolgreich verschoben wurde, kannst du den folgenden Befehl verwenden:
systemd-cgls -l
Dadurch wird eine Liste aller verfügbaren Zonen sowie der darin enthaltenen Prozesse angezeigt.