Appearance
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 anzeigentop - Echtzeit-Prozessanzeige:
bash
top # Echtzeit-Prozessliste anzeigentop-Bedienung:
q: BeendenShift + P: Nach CPU-Nutzung sortierenShift + M: Nach Speichernutzung sortierenk: 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 beendenkillall - Alle Prozesse mit einem Namen beenden:
bash
killall prozessname # Alle Prozesse mit diesem Namen beendenSignale verstehen:
1(SIGHUP): Neu starten / Konfiguration neu laden9(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 Hintergrundnohup - 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ührenProzess 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 holenHintergrundprozesse verwalten:
bash
jobs # Hintergrundprozesse anzeigen
fg %1 # Job 1 in den Vordergrund holen
bg %1 # Job 1 im Hintergrund fortsetzen11.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.05up 1 day: Systemlaufzeitload average: Systemlast (1, 5, 15 Minuten)
Zweite Zeile (Prozessstatus):
Tasks: 100 total, 1 running, 99 sleeping, 0 stopped, 0 zombieDritte/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/cacheProzesstabelle:
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 befehlWichtige Spalten:
PID: Prozess-ID%CPU: CPU-Nutzung in Prozent%MEM: Speichernutzung in ProzentTIME+: CPU-ZeitverbrauchCOMMAND: 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
- Prozess mit
ps aux | grep programmnamefinden - PID notieren
- Mit
kill PIDnormal beenden - Falls nicht funktioniert:
kill -9 PIDgewaltsam beenden
Szenario 2: Ein Programm im Hintergrund ausführen
nohup programm &ausführen- Terminal schließen - Programm läuft weiter
- Mit
ps aux | grep programmStatus prüfen
Szenario 3: Einen Dienst neu starten
bash
sudo systemctl restart dienstnameÜbungsaufgaben:
- Starten Sie einen
sleep 1000 &Prozess im Hintergrund - Zeigen Sie den Prozess mit
psan - Beenden Sie den Prozess mit
kill - Starten Sie einen Prozess mit
nohup - Überwachen Sie die Systemlast mit
top
