VMware ESXi and vSphere Cluster Management

Linux-Prozesse verstehen: Grundlagen, PIDs und Ressourcen

Lerne, was Linux-Prozesse sind, wie sie sich von Programmen unterscheiden und welche Rolle PID, Benutzer, Gruppen, CPU und Arbeitsspeicher spielen.

Ein Prozess ist eine aktuell ausgeführte Instanz eines Programms. Diese Unterscheidung ist eine wichtige Grundlage für die Linux-Administration: Eine Programmdatei kann auf dem Datenträger vorhanden sein, ohne gerade ausgeführt zu werden. Erst beim Start wird daraus ein Prozess, der Ressourcen benötigt und vom Betriebssystem verwaltet wird.

Was ist ein Prozess?

Ein Programm besteht aus ausführbarem Code und weiteren benötigten Dateien. Es liegt beispielsweise auf einem Datenträger und kann gestartet werden. Ein Prozess entsteht, wenn Linux diesen Code lädt und ausführt. Zum Prozess gehören dabei unter anderem sein aktueller Ausführungszustand, sein Speicherbereich, seine Identität und die Ressourcen, die er verwendet.

Ein einfaches Bild hilft bei der Unterscheidung: Das Programm ist der gespeicherte Bauplan, der Prozess ist eine laufende Ausführung dieses Bauplans. Wird dasselbe Programm zweimal gestartet, können daraus zwei getrennte Prozesse entstehen.

MerkmalProgrammProzess
ExistenzKann dauerhaft auf dem Datenträger gespeichert seinExistiert nur während der Ausführung
FormAusführbarer Code oder AnwendungLaufende Instanz des Programms
IdentifikationZum Beispiel über Dateiname oder PfadÜber eine Prozess-ID, kurz PID
RessourcenBenötigt nicht zwingend gerade CPU oder ArbeitsspeicherNutzt während der Laufzeit Systemressourcen

Wie entstehen Prozesse bei der Shell-Nutzung?

Eine Shell ist eine Kommandozeilenumgebung. Wenn du dort einen Befehl eingibst und bestätigst, interpretiert die Shell die Eingabe. Handelt es sich um ein ausführbares Programm, startet Linux dessen Ausführung und legt dafür typischerweise einen eigenen Prozess an.

$ sleep 30

Während dieser Befehl läuft, existiert ein Prozess für das Programm sleep. Nach Ablauf der angegebenen Zeit beendet sich dieser Prozess normalerweise wieder. Die Shell wartet bei einem solchen Vordergrundbefehl üblicherweise, bis die Ausführung abgeschlossen ist.

Startest du dasselbe Programm mehrfach, wird nicht automatisch derselbe Prozess wiederverwendet. Jeder neue Start kann eine eigene Instanz mit eigener PID und eigenem Ressourcenverbrauch erzeugen.

$ sleep 30 &
$ sleep 30 &

In diesem Beispiel werden zwei Instanzen gestartet. Das kaufmännische Und-Zeichen weist die Shell an, die Befehle im Hintergrund auszuführen. Die genaue Anzeige solcher Prozesse und ihrer PIDs ist ein Thema für weiterführende Prozesswerkzeuge wie ps.

Die Prozess-ID (PID)

Jeder laufende Prozess besitzt eine numerische Prozess-ID, kurz PID. Sie dient dazu, einen Prozess eindeutig zuzuordnen, solange er läuft. Dateiname und PID erfüllen unterschiedliche Aufgaben: Der Dateiname beschreibt das gestartete Programm, während die PID die konkrete laufende Instanz bezeichnet.

Die PID ist für mehrere Verwaltungsaufgaben wichtig:

  • Prozesse in einer Liste eindeutig erkennen
  • Informationen zu einer bestimmten Instanz untersuchen
  • ähnlich benannte oder mehrfach gestartete Prozesse unterscheiden
  • einen genau bestimmten Prozess für eine spätere Verwaltungsmaßnahme auswählen

Beispielsweise können mehrere Instanzen eines Editors denselben Programmnamen anzeigen. Die jeweilige PID macht sichtbar, dass es sich um unterschiedliche Prozesse handelt. Eine PID darf nicht dauerhaft als feste Kennung verstanden werden: Nach dem Ende eines Prozesses kann Linux die Nummer später wieder verwenden.

Benutzer, Gruppe und Berechtigungen

Ein Prozess läuft nicht ohne Identität. Linux ordnet ihn einem Benutzerkonto zu. Dieses Konto beschreibt, unter welcher Benutzeridentität der Prozess ausgeführt wird. Zusätzlich besitzt der Prozess einen Gruppenkontext, insbesondere eine primäre Gruppe. Gruppen sind wichtig, weil sie bei der Prüfung von Zugriffsrechten berücksichtigt werden.

MerkmalBedeutungAdministrativer Nutzen
PIDNumerische Kennung des laufenden ProzessesEine bestimmte Instanz anzeigen, untersuchen oder gezielt verwalten
BenutzerBenutzerkonto, unter dem der Prozess läuftBesitz und mögliche Berechtigungen einordnen
GruppePrimärer beziehungsweise weiterer Gruppenkontext des ProzessesZugriffe auf Dateien und Ressourcen im Berechtigungskontext verstehen
CPU-NutzungAnteil der Rechenzeit, den der Prozess verwendetHohe Rechenlast einem Prozess zuordnen
SpeichernutzungArbeitsspeicher, den der Prozess belegt oder benötigtSpeicherverbrauch und mögliche Engpässe untersuchen

Die Eigentümerschaft beeinflusst auch administrative Eingriffe. Ein Benutzer darf in der Regel seine eigenen Prozesse verwalten. Für Prozesse anderer Benutzer oder besonders geschützte Systemprozesse sind häufig zusätzliche administrative Rechte erforderlich. Vor einem Eingriff sollte deshalb immer geprüft werden, welcher Prozess gemeint ist und wem er gehört.

Multitasking: Viele Prozesse gleichzeitig

Linux kann zahlreiche Prozesse nebenläufig ausführen. Multitasking bedeutet, dass das Betriebssystem die verfügbare Ausführungszeit zwischen mehreren Prozessen verteilt. Ein Prozess ist dabei nicht dauerhaft allein auf der CPU. Das System plant kurze Ausführungsabschnitte und wechselt zwischen den bereiten Prozessen.

Im administrativen Sprachgebrauch werden Prozesse häufig auch als Tasks bezeichnet. Im Alltag können gleichzeitig beispielsweise folgende Prozesse aktiv sein:

  • die Shell in einem Terminal
  • ein Texteditor
  • ein Webbrowser
  • ein Hintergrunddienst
  • ein Befehl, der gerade Daten verarbeitet

Diese Programme wirken für den Benutzer so, als würden sie unabhängig voneinander arbeiten. Tatsächlich koordiniert der Linux-Kernel ihre Ausführung. Nebenläufigkeit bedeutet daher nicht, dass jede Aufgabe ständig die vollständige Hardwarekontrolle besitzt.

Gemeinsam genutzte Ressourcen

Prozesse konkurrieren um begrenzte Systemressourcen. Zwei zentrale Ressourcen sind die CPU und der Arbeitsspeicher.

CPU-Zeit

Die CPU führt Maschinenbefehle aus. Wenn viele Prozesse gleichzeitig Rechenarbeit verlangen, verteilt Linux die verfügbare CPU-Zeit nach seinen Planungsregeln. Ein rechenintensiver Prozess kann dadurch andere Prozesse weniger flüssig erscheinen lassen, besonders wenn die CPU-Kapazität weitgehend ausgelastet ist.

Arbeitsspeicher

Ein laufender Prozess benötigt Arbeitsspeicher für seinen Code, seine Daten und seinen aktuellen Zustand. Viele große Prozesse können den verfügbaren Speicher stark beanspruchen. Wird der Speicher knapp, kann das System langsamer reagieren, weil zusätzliche Speicherverwaltung erforderlich wird.

CPU- und Speichernutzung sind nicht dasselbe: Ein Prozess kann viel Speicher belegen, aber kaum rechnen. Ein anderer kann wenig Speicher benötigen und dennoch dauerhaft CPU-Zeit beanspruchen. Für die Beurteilung eines Problems müssen beide Ressourcen getrennt betrachtet werden.

Beispiel: Mehrere Anwendungen laufen gleichzeitig

Angenommen, ein Terminal, ein Editor und ein Hintergrunddienst sind geöffnet. Jeder dieser laufenden Teile kann einen oder mehrere Prozesse umfassen. Linux weist ihnen jeweils Speicherbereiche und bei Bedarf CPU-Zeit zu.

Wird zusätzlich dasselbe Programm mehrfach gestartet, entstehen unter Umständen mehrere eigenständige Prozesse. Diese haben jeweils eigene PIDs, können verschiedenen Benutzern gehören und unterschiedlich viel CPU oder Arbeitsspeicher verbrauchen. Gleichartige Einträge in einer Prozessübersicht sind deshalb nicht automatisch ein Fehler.

Warum Prozessverwaltung wichtig ist

Administratoren müssen laufende Prozesse beobachten und identifizieren können, weil Prozesse die Funktion und Leistung eines Systems unmittelbar beeinflussen. Typische Aufgaben sind:

  1. laufende Prozesse auflisten
  2. einen Prozess anhand von PID, Programmname und Benutzer zuordnen
  3. Ressourcenverbrauch und Zustand eines Prozesses bewerten
  4. einen problematischen Prozess gezielt und kontrolliert beenden

Das Beenden sollte nicht vorschnell erfolgen. Zuerst muss klar sein, welcher Prozess betroffen ist und welche Folgen sein Ende haben kann. Ein Systemdienst kann beispielsweise von anderen Anwendungen benötigt werden. Die PID und der Besitzer helfen dabei, eine Verwechslung mit einer anderen Instanz zu vermeiden.

Für das Anzeigen laufender Prozesse ist ps ein wichtiges weiterführendes Werkzeug. In der nächsten Lernstufe geht es darum, welche Informationen eine Prozessliste enthält und wie sie gelesen wird. Für lange Textausgaben ist less ein angrenzendes Kommando zum seitenweisen Lesen; es ist selbst kein spezielles Prozessverwaltungswerkzeug.

Häufige Verständnisprobleme

„Die Anwendung ist installiert, also läuft sie.“

Eine installierte Anwendung kann auf dem Datenträger vorhanden sein, ohne aktuell ausgeführt zu werden. Erst während der Laufzeit existiert ein zugehöriger Prozess. Das Vorhandensein einer Programmdatei und das Vorhandensein eines Prozesses sind daher zwei verschiedene Sachverhalte.

„Mehrere gleiche Einträge sind ein Fehler.“

Mehrere gleichartige Einträge können völlig normal sein. Jeder Start kann eine eigene Prozessinstanz erzeugen. Vergleiche die PIDs und den jeweiligen Benutzer, bevor du eine Annahme über die Ursache triffst.

„Ich kann jeden Prozess beenden.“

Die Berechtigungen des Benutzers und der Gruppenkontext spielen eine wichtige Rolle. Eigene Prozesse lassen sich meist einfacher verwalten als Prozesse anderer Benutzer oder geschützte Systemprozesse. Fehlende Rechte sind daher nicht automatisch ein Hinweis auf einen defekten Prozess.

„Viele Prozesse machen ein System immer langsam.“

Die Anzahl allein reicht nicht für eine Bewertung. Entscheidend ist, wie viel CPU-Zeit und Arbeitsspeicher die Prozesse tatsächlich beanspruchen. Ein System kann viele überwiegend wartende Prozesse haben und trotzdem flüssig arbeiten. Umgekehrt kann bereits ein einzelner stark rechnender oder speicherhungriger Prozess Probleme verursachen.

Zusammenfassung

  • Ein Prozess ist eine aktuell ausgeführte Instanz eines Programms.
  • Ein Programm kann gespeichert und installiert sein, ohne dass ein Prozess dazu läuft.
  • Ein Shell-Befehl kann ein Programm starten und dadurch einen Prozess erzeugen.
  • Jeder laufende Prozess besitzt eine PID zur eindeutigen Zuordnung.
  • Benutzerkonto und Gruppe beschreiben den Berechtigungs- und Eigentümerkontext.
  • Linux führt viele Prozesse nebenläufig aus; Prozesse werden deshalb auch Tasks genannt.
  • CPU-Zeit und Arbeitsspeicher sind gemeinsam genutzte, begrenzte Ressourcen.
  • Für die Prozessverwaltung werden Prozesse aufgelistet, zugeordnet, untersucht und bei Bedarf kontrolliert beendet.