Liste der Linux-Prozesse: Überwachungs- und Verwaltung von Prozessen unter Linux

Foto des Autors

By Jan

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:

  1. Starte das Werkzeug: Führe den Befehl top, htop oder psutil in einem Terminalfenster aus.
  2. Überwache die Prozesse: Das Tool zeigt eine Echtzeitliste der laufenden Prozesse an.
  3. Sortiere und filtere die Prozesse: Du kannst die Prozesse anhand verschiedener Kriterien wie CPU-Auslastung, Speichernutzung oder Prozessname sortieren und filtern.
  4. 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.

Schreibe einen Kommentar