50 % Rabatt auf alle Pläne, begrenzte Zeit. Ab $2.48/mo
Noch 10 min
Server & Betriebssysteme

Prozessverwaltung meistern – Linux ps aux Befehl

Ada Lovegood By Ada Lovegood 10 Min. Lesezeit Aktualisiert am 11. Juli 2024
Linux-Befehl ps aux

Haben Sie gerade mindestens fünf andere Browser-Tabs offen und suchen nach einer Lösung für ein Linux-Problem?
Damit sind Sie nicht allein. Auch Maschinen führen mehrere Aufgaben gleichzeitig aus. Und genau wie Sie ist auch Linux ein Multitasker, bei dem mehrere Prozesse parallel laufen. Ob Sie Linux professionell als Entwickler einsetzen oder es im Alltag als normaler Benutzer nutzen - Sie sollten diese parallelen Prozesse verstehen, um die volle Kontrolle über Ihr System zu behalten. Prozessverwaltung und Systemsteuerung sind grundlegende Bestandteile eines jeden Linux-Systems.

Um Prozesse auf dem System effizient zu verwalten, den aktuellen Systemzustand in Echtzeit einzusehen, einen Überblick über alle Hintergrundprozesse zu haben und Systemressourcen zu steuern, benötigen Sie fundierte Kenntnisse der Prozessverwaltung. Der Befehl ps aux ist ein leistungsstarkes Werkzeug, das dabei eine zentrale Rolle spielt. In diesem Beitrag erfahren Sie mehr über den Befehl ps aux und seine Einsatzmöglichkeiten. Außerdem erklären wir die Grundlagen, wie Linux-Prozesse funktionieren.

Prozessverwaltung in Linux verstehen

Bei der Arbeit mit Linux erfolgt der Großteil unserer Interaktion mit dem System in Form von Befehlen. In Linux ist ein Prozess die Ausführung eines Befehls. Die Linux-Prozessverwaltung umfasst die Steuerung der Prozesse, die ein Befehl gestartet hat. Sie können einen Prozess beenden, starten oder bereits beendete Prozesse wieder aufnehmen. Außerdem können Sie laufende Befehle beeinflussen.

Es gibt zwei Arten von Linux-Prozessen:

  • Vordergrundprozesse
  • Hintergrundprozesse

Linux Vordergrundprozesse

Ein Vordergrundprozess wird aktiv ausgeführt und erfordert in der Regel eine kontinuierliche, echtzeitbasierte Interaktion mit dem Benutzer. Während ein Vordergrundprozess läuft, sind alle anderen Prozesse angehalten – weitere Befehle können in dieser Zeit nicht ausgeführt werden. Vordergrundprozesse empfangen Eingaben über die Tastatur als Standardeingabe (stdin). Zur Klarstellung: stdin, stdout und stderr sind Linux-Datenströme. Sie definieren, wie der Benutzer mit dem Prozess interagiert und Daten bereitstellt. Die Standardausgabe (stdout) wird vom Prozess abhängig von seiner Funktion und den erhaltenen Eingaben erzeugt. Vordergrundprozesse sind der Standard-Ausführungsmodus in Linux.

Linux Hintergrundprozesse

Hintergrundprozesse sind das genaue Gegenteil von Vordergrundprozessen: Sie erfordern keine Benutzerinteraktion und belegen das Terminal nicht exklusiv, sodass andere Prozesse gleichzeitig ausgeführt werden können. Auch das Ein- und Ausgabeverhalten unterscheidet sich. Hintergrundprozesse verwenden in der Regel keine stdin-Eingabe. Die Ergebnisse können jedoch als stdout ausgegeben werden. Diese Ausgabe erscheint gleichzeitig mit der Ausgabe aktiver Vordergrundprozesse. So lässt sich der Fortschritt oder das Ergebnis eines Hintergrundprozesses verfolgen, ohne andere laufende Aktionen zu unterbrechen.

Da viele Aufgaben in Linux über die Kommandozeile erledigt werden, können Vordergrundprozesse schnell hinderlich sein – das Terminal ist blockiert und steht für andere Aufgaben nicht zur Verfügung. Es kann daher sinnvoll sein, einen Vordergrundprozess in den Hintergrund zu verlagern. Um einen Prozess in den Hintergrund zu verschieben, einen Prozess in den Hintergrund verschieben muss er zunächst im Vordergrund angehalten werden. Das geht ganz einfach mit CTRL+Z. Anschließend lässt sich der angehaltene Prozess mit dem Befehl bg im Hintergrund neu starten. Der Befehl fg kehrt den Vorgang um und bringt den Prozess wieder in den Vordergrund.

Prozessstatus: Syntax, Befehle und Ausgabe verstehen

Effektives Prozessmanagement in Linux setzt voraus, den Status laufender Prozesse zu kennen – überwacht werden können sie mit dem Befehl ps aux. Bevor wir uns diesen Befehl genauer ansehen, schauen wir uns zunächst die verschiedenen Prozesszustände an. Es gibt mehrere Prozesstypen und -zustände; die folgende Tabelle zeigt die gängigsten:

Prozessstatus Beschreibung
Laufend (R) Der Prozess wird aktuell ausgeführt und belegt CPU-Ressourcen.
Wartend Unterbrechbar (S) Der Prozess wartet auf eine bestimmte Eingabe oder ein Ereignis, bevor er weiterläuft. Aktuell belegt er keine CPU-Ressourcen. Sobald Ressourcen verfügbar sind oder ein Signal eintrifft, wird der Prozess fortgesetzt.
Nicht unterbrechbar (D) Ähnlich wie ein unterbrechbarer Warteprozess belegt ein nicht unterbrechbarer Warteprozess keine CPU-Ressourcen. Der Unterschied: Er reagiert nicht auf Signale und wird erst wieder aktiv, wenn die benötigten Ressourcen verfügbar sind.
Gestoppt (T) Eine Benutzereingabe oder ein bestimmtes Ereignis hat den Prozess angehalten. Ein gestoppter Prozess belegt keine CPU-Ressourcen.
Beendet (X) Der Prozess wurde beendet und existiert nicht mehr.

Ein solides Verständnis dieser Prozesszustände ist entscheidend für die effektive Verwaltung und Fehlersuche in Linux-Systemen. Im nächsten Abschnitt gehen wir auf Syntax und Befehle zur Abfrage des Prozessstatus in Linux ein und erklären, wie die Ausgabe zu interpretieren ist.

Syntax und Befehle zur Abfrage des Prozessstatus

Den Prozessstatus unter Linux können Sie mit der grundlegenden Syntax des ps-Befehls abfragen:

ps [process name]

Für den ps-Befehl stehen weitere Optionen zur Verfügung:

zu: Diese Option zeigt eine vollständige Liste aller auf dem System laufenden Prozesse. Sie enthält Informationen wie Prozess-IDs (PIDs), übergeordnete Prozess-IDs (PPIDs), CPU- und Speicherauslastung sowie Prozessstatus. Die Ausgabe von ps aux ist übersichtlicher, besser lesbar und enthält deutlich mehr nützliche Informationen als der einfache ps-Befehl.

ef: Diese Option zeigt eine vollständige Prozessliste mit zusätzlichen Details, einschließlich der Prozesshierarchie als Baumstruktur.

l: Diese Option liefert eine ausführliche Listenansicht mit detaillierten Informationen zu den Prozessen.

Die Ausgabe verstehen

Wenn Sie den ps-Befehl mit den gewünschten Optionen ausführen, erzeugt er eine Ausgabe aller aktuell auf Ihrem System laufenden Prozesse. Die Ausgabe besteht aus Spalten, die verschiedene Prozessattribute anzeigen: Prozess-ID (PID), übergeordnete Prozess-ID (PPID), CPU-Auslastung, Speicherauslastung, Prozessstatus, Terminaltyp und Befehlsname.

Im Folgenden wird erklärt, was jede dieser Spalten bedeutet:

PID: Diese Spalte zeigt die eindeutige ID des Prozesses.

TTY: Diese Spalte zeigt den Terminaltyp, über den der Benutzer angemeldet ist.

ZEIT: Diese Spalte gibt an, wie viel CPU dieser Prozess in Minuten und Sekunden verbraucht hat.

CMD: Diese Spalte enthält den Namen des Befehls, der diesen Prozess gestartet hat.

Die Auswertung der Informationen des ps-Befehls gibt Ihnen einen tieferen Einblick in das Verhalten Ihres Linux-Systems.

Erweiterte ps-Techniken für die Prozessverwaltung

Im Folgenden werden einige erweiterte Funktionen des ps-Befehls und ihr gezielter Einsatz vorgestellt:

1. Prozesse sortieren

Mit dem Befehl ps aux lässt sich die Ausgabe nach verschiedenen Spalten sortieren. Sie können Prozesse zum Beispiel nach Prozess-ID oder CPU-Auslastung sortieren, um sie in der gewünschten Reihenfolge anzuzeigen.

Hier ist ein Beispiel für die Sortierung von Prozessen nach Prozess-ID mit ps aux:

ps aux –-sort pid

Der head-Befehl wird verwendet, um nur die ersten fünf Zeilen der Ausgabe auszugeben.

ps aux nach PID sortieren

2. Prozessbaum-Visualisierung

Wenn du die Eltern-Kind-Beziehung von Prozessen übersichtlich darstellen möchtest, nutze den ps-Befehl mit der forest-Option.

ps -aux --forest

Eltern-Kind-Beziehung von Linux-Prozessen

Um die Beziehungen zwischen Prozessen in einer Baumstruktur darzustellen, eignet sich der Befehl pstree. Die Ausgabe ist übersichtlicher als bei anderen Befehlen und zeigt die Prozesshierarchie klar auf. Gib folgenden Befehl ein:

pstree [pid or username]

Wenn du diesem Befehl eine PID übergibst, wird der entsprechende Prozess als Wurzel des Prozessbaums betrachtet.

3. Filterprozesse

Angenommen, Sie möchten mit einer bestimmten Gruppe von Prozessen arbeiten – zum Beispiel alle Prozesse eines bestimmten Benutzers auflisten. Mit dem ps-Befehl lassen sich Prozesse nach beliebigen Kriterien filtern. In diesem Beispiel filtern wir die Prozesse nach Benutzername.

ps -u [username]

Linux-Prozesse mit dem ps-Befehl filtern

Der Befehl ps aux grep filtert Prozesse anhand eines beliebigen Musters oder Schlüsselworts, das du angibst. Ein Beispiel:

ps aux grep Befehlsbeispiel

Dieser Befehl listet zunächst alle laufenden Prozesse auf und übergibt die Ausgabe an grep, um die Liste nach Prozess-ID zu filtern. Im obigen Screenshot sind alle Prozesse zu sehen, deren Informationen die Zahl 15 enthalten.

Weitere Informationen zum Befehl ps und seinen Möglichkeiten findest du auf der zugehörigen Manualseite. Mit folgendem Befehl rufst du sie auf:

man ps

Aufgabenpriorität in Linux verwalten

Um die Prozessverwaltung in Linux besser zu verstehen, sollten wir uns auch die Prozesspriorität ansehen und erklären, wie man sie ändert. Stell dir vor, du führst mehrere Prozesse gleichzeitig aus und die CPU ist überlastet. Um deine Ressourcen in dieser Situation sinnvoll zu verwalten, musst du die Priorität der laufenden Prozesse anpassen. Jeder Prozess in Linux hat einen Prioritätswert, anhand dessen der Kernel entscheidet, welche Aufgaben bevorzugt ausgeführt werden. Dieser Wert liegt zwischen -20 und 19: 19 steht für die niedrigste Priorität, -20 für die höchste. Prozesse mit hoher Priorität erhalten mehr CPU-Zeit als andere. Diese Prioritätswerte werden häufig als "Nice"-Werte bezeichnet. Ein niedriger Nice-Wert bedeutet dabei eine höhere Priorität.

Mit den Befehlen nice und renice lässt sich die Ressourcenzuweisung des Systems gezielt steuern.

Doch bevor wir die Priorität von Prozessen ändern, schauen wir uns den ersten Anwendungsfall des ps-Befehls an.

  • Aktuelle Priorität aller Prozesse mit dem ps-Befehl anzeigen:

Dieser Befehl listet alle Prozesse mit ihrer Prozess-ID (PID), dem Befehlsnamen und der aktuellen Priorität (Nice-Wert) auf:

 

ps -eo pid,cmd,nice

Prioritäten aller Prozesse mit dem ps-Befehl anzeigen

  • Starten eines Prozesses mit standardmäßig hoher Priorität über den nice-Befehl:

Mit diesem Befehl können Sie einen Prozess mit der gewünschten Priorität starten:

nice -n [priority] [command]

Ersetzen Sie [priority] durch den gewünschten negativen Wert für die Prioritätsstufe und [command] durch den auszuführenden Befehl.

Hier ein Beispiel:

Einen Prozess mit standardmäßig hoher Priorität starten

  • Priorität eines bereits laufenden Prozesses ändern:
renice -n [priority] -p [PID]

Ersetze [PID] durch die Prozess-ID des Prozesses, den du anpassen möchtest.

Wenn du eine leistungsstarke Linux-Maschine für verschiedenste Aufgaben benötigst, ist ein Linux VPS die richtige Wahl für dich. Cloudzy bietet verschiedene Linux VPS-Pläne mit deiner bevorzugten Distribution vorinstalliert an. Mit Vorteilen wie 24/7-Support, 30-tägiger Geld-zurück-Garantie und einer Verfügbarkeit von 99,95 % hält Cloudzy die Preise niedrig. Unsere Linux VPS-Tarife starten bei nur 4,95 $/Monat.

Linux VPS Hosting

Hol dir einen Economy- oder Premium-Linux VPS zum günstigen Preis - ideal für Websites oder Remote-Desktop. VPS läuft auf Linux KVM für höhere Effizienz und setzt auf leistungsstarke Hardware mit NVMe SSD-Speicher für mehr Geschwindigkeit.

Weiterlesen

Fazit

Zusammenfassend lässt sich sagen: Prozessverwaltung und Systemsteuerung zu beherrschen ist unverzichtbar für Systemadministratoren, Linux-Enthusiasten, die tiefer einsteigen möchten, und alltägliche Linux-Nutzer. Das Verstehen der Funktionen und Möglichkeiten des ps-Befehls erleichtert den Einstieg in die Prozessverwaltung erheblich. Deshalb hat dieser Artikel wichtige Anwendungsfälle des ps-Befehls behandelt und gleichzeitig eine Einführung in Linux-Prozesse gegeben.

Häufig gestellte Fragen

Was ist der Befehl ps aux in Linux?

Der ps aux-Befehl ist ein häufig verwendeter Linux-Befehl, um Informationen über laufende Prozesse abzurufen. Er liefert eine übersichtliche Liste aller Prozesse mit Details wie Prozess-IDs (PIDs), CPU- und Speicherauslastung, Ausführungsstatus und weiteren relevanten Informationen.

Welche zwei Arten von Prozessen gibt es in Linux?

Vordergrundprozesse und Hintergrundprozesse. Vordergrundprozesse belegen das Terminal während ihrer Ausführung und lassen keine weiteren Eingaben zu. Hintergrundprozesse laufen im Hintergrund und blockieren das Terminal nicht.

Wie kann ich die laufenden Prozesse auf meinem Linux-System anzeigen?

Die laufenden Prozesse auf deinem Linux-System lassen sich mit Befehlen wie ps, top oder htop anzeigen. Der Befehl ps aux liefert zum Beispiel detaillierte Informationen zu allen laufenden Prozessen.

Teilen

Weitere Blog-Beiträge

Weiterlesen.

Beste selbst gehostete Apps, die du mit Cosmos Cloud betreiben kannst – Titelbild mit App-Panels rund um ein Cosmos-Dashboard.
Server & Betriebssysteme

Die besten selbst gehosteten Apps für Cosmos Cloud: Dateien, Medien, Passwörter, Automatisierung und mehr!

Maybe du hast Cosmos Cloud eingerichtet und möchtest wissen, welche Apps gut dazu passen - oder du hast dich noch gar nicht für Cosmos entschieden und willst nur sehen, wie gut es in deinen Workflow passt

Nick SilberNick Silber 16 Min. Lesezeit
Portainer vs Cosmos Cloud für die Verwaltung von Docker-Apps – Titelbild mit Hybrid-Setup-Diagramm und farbigen Blöcken für Ops und Zugriff.
Server & Betriebssysteme

Portainer vs Cosmos Cloud: Die bessere Wahl für Docker App-Management

Wenn du Docker bereits kennst und einfach den saubereren Weg suchst, einen wachsenden App-Stack zu betreiben, hier die kurze Antwort auf Portainer vs Cosmos Cloud: Portainer ist die stärkere Wahl für direkt

Nick SilberNick Silber 14 Min. Lesezeit
Cosmos Cloud vs CasaOS vs Umbrel – Feature-Grafik mit drei Self-Hosting-Wegen innerhalb eines abstrakten Cloud-Netzwerks.
Server & Betriebssysteme

Cosmos Cloud vs CasaOS vs Umbrel: Welche Self-Hosted-Plattform passt zu deinem Setup?

Die kurze Antwort: CasaOS ist nach wie vor der einfachste Einstieg, Umbrel bietet die übersichtlichste kuratierte Oberfläche, und Cosmos Cloud macht mehr Sinn, sobald du mehr Kontrolle über Domain

Nick SilberNick Silber 11 Min. Lesezeit

Bereit zum Deployen? Ab 2,48 $/Monat.

Unabhängige Cloud seit 2008. AMD EPYC, NVMe, 40 Gbps. 14 Tage Geld-zurück-Garantie.