Skip to content

Kapitel 11: Prozessverwaltung

11.1 Was ist ein Prozess? Prozesse anzeigen (ps, top-Befehl)

Was ist ein Prozess?

  • Ein Prozess ist ein laufendes Programm
  • Jeder Prozess hat eine eindeutige Prozess-ID (PID)
  • Prozesse können im Vorder- oder Hintergrund laufen

ps - Prozessstatus anzeigen:

bash
ps                      # Prozesse des aktuellen Benutzers anzeigen
ps aux                  # Alle Prozesse detailliert anzeigen
ps -ef                  # Alle Prozesse im Standardformat anzeigen
ps -u benutzer        # Prozesse eines bestimmten Benutzers anzeigen

top - Echtzeit-Prozessanzeige:

bash
top                     # Echtzeit-Prozessliste anzeigen

top-Bedienung:

  • q: Beenden
  • Shift + P: Nach CPU-Nutzung sortieren
  • Shift + M: Nach Speichernutzung sortieren
  • k: Prozess beenden (PID eingeben)

11.2 Prozess beenden (kill, pkill-Befehl, nach Prozessname/-ID beenden)

kill - Prozess nach PID beenden:

bash
kill PID               # Prozess normal beenden (SIGTERM)
kill -9 PID           # Prozess gewaltsam beenden (SIGKILL)
kill -15 PID          # Prozess sanft beenden (SIGTERM)

pkill - Prozess nach Namen beenden:

bash
pkill prozessname     # Prozess nach Namen beenden
pkill -9 prozessname # Prozess gewaltsam beenden
pkill -u benutzer    # Alle Prozesse eines Benutzers beenden

killall - Alle Prozesse mit einem Namen beenden:

bash
killall prozessname   # Alle Prozesse mit diesem Namen beenden

Signale verstehen:

  • 1 (SIGHUP): Neu starten / Konfiguration neu laden
  • 9 (SIGKILL): Gewaltsam beenden (kann nicht ignoriert werden)
  • 15 (SIGTERM): Sanft beenden (Standard)

11.3 Prozesse im Hintergrund ausführen (&, nohup-Befehl, praktische Tipps)

Prozess im Hintergrund starten (&):

bash
befehl &              # Befehl im Hintergrund ausführen
sleep 100 &           # Schläft 100 Sekunden im Hintergrund

nohup - Prozess unabhängig vom Terminal ausführen:

bash
nohup befehl &        # Prozess läuft auch nach Terminal-Beendung weiter
nohup python script.py &  # Python-Skript im Hintergrund ausführen

Prozess vom Vorder- ins Hintergrund wechseln:

bash
befehl                # Befehl im Vordergrund starten
Ctrl + Z              # Prozess anhalten und in den Hintergrund schieben
bg                    # Im Hintergrund fortsetzen
fg                    # Zurück in den Vordergrund holen

Hintergrundprozesse verwalten:

bash
jobs                   # Hintergrundprozesse anzeigen
fg %1                 # Job 1 in den Vordergrund holen
bg %1                 # Job 1 im Hintergrund fortsetzen

11.4 Prozessressourcenverbrauch anzeigen (top-Befehl interpretieren, CPU, Speicher)

top-Ausgabe interpretieren:

Erste Zeile (Systemstatus):

top - 10:00:00 up 1 day,  2 users,  load average: 0.00, 0.01, 0.05
  • up 1 day: Systemlaufzeit
  • load average: Systemlast (1, 5, 15 Minuten)

Zweite Zeile (Prozessstatus):

Tasks: 100 total,   1 running,  99 sleeping,   0 stopped,   0 zombie

Dritte/fierte Zeile (CPU- und Speicherstatus):

%Cpu(s):  0.3 us,  0.0 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si
MiB Mem :  2000.0 total,   500.0 free,   800.0 used,   700.0 buff/cache

Prozesstabelle:

PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
1234 benutzer 20   0  100000   5000   3000 R   5.0   0.3   0:01.23 befehl

Wichtige Spalten:

  • PID: Prozess-ID
  • %CPU: CPU-Nutzung in Prozent
  • %MEM: Speichernutzung in Prozent
  • TIME+: CPU-Zeitverbrauch
  • COMMAND: Prozessname/Befehl

11.5 Praxis: Abnormale Prozesse beenden, Programme im Hintergrund ausführen

Schritt-für-Schritt-Anleitung:

Szenario 1: Einen Prozess beenden, der nicht mehr reagiert

  1. Prozess mit ps aux | grep programmname finden
  2. PID notieren
  3. Mit kill PID normal beenden
  4. Falls nicht funktioniert: kill -9 PID gewaltsam beenden

Szenario 2: Ein Programm im Hintergrund ausführen

  1. nohup programm & ausführen
  2. Terminal schließen - Programm läuft weiter
  3. Mit ps aux | grep programm Status prüfen

Szenario 3: Einen Dienst neu starten

bash
sudo systemctl restart dienstname

Übungsaufgaben:

  1. Starten Sie einen sleep 1000 & Prozess im Hintergrund
  2. Zeigen Sie den Prozess mit ps an
  3. Beenden Sie den Prozess mit kill
  4. Starten Sie einen Prozess mit nohup
  5. Überwachen Sie die Systemlast mit top

Frei für alle Anfänger