Die Prozessverwaltung ist grundlegend für die Linux-Administration. Dieser Artikel erklärt die wichtigsten Tools zum Überwachen und Steuern von Prozessen.
Prozesse anzeigen
ps - Prozess-Status
# Alle Prozesse
ps aux
# Prozesse des aktuellen Benutzers
ps u
# Prozessbaum
ps auxf
ps -ejH
# Nach Name filtern
ps aux | grep nginx
# Nur PIDs
pgrep nginx
pgrep -u www-dataps-Spalten erklärt
USER Benutzer
PID Prozess-ID
%CPU CPU-Auslastung
%MEM Speicherauslastung
VSZ Virtueller Speicher (KB)
RSS Physischer Speicher (KB)
TTY Terminal
STAT Status
START Startzeit
TIME CPU-Zeit
COMMAND BefehlProzess-Status (STAT)
R Running
S Sleeping
D Disk sleep (uninterruptible)
Z Zombie
T Stopped
< High priority
N Low priority
s Session leader
l Multi-threaded
+ Foreground processtop und htop
top
topTastenkürzel in top:
h Hilfe
q Beenden
k Prozess beenden (kill)
r Priorität ändern (renice)
u Nach Benutzer filtern
M Nach Speicher sortieren
P Nach CPU sortieren
1 CPU-Kerne einzeln anzeigen
c Vollständigen Befehl anzeigenhtop (empfohlen)
apt install htop
htophtop-Vorteile:
- Farbige Anzeige
- Mausunterstützung
- Horizontales und vertikales Scrollen
- Prozessbaum-Ansicht
- Suchen und Filternatop (detailliert)
apt install atop
atopatop-Features:
- Historische Daten
- Disk I/O pro Prozess
- Netzwerk pro Prozess
- Ressourcen-AccountingProzesse beenden
kill
# Standard (SIGTERM)
kill 1234
# Erzwingen (SIGKILL)
kill -9 1234
# Nach Name
pkill nginx
pkill -u username
# Alle Prozesse eines Benutzers
killall -u username
# Signal-Liste
kill -lWichtige Signale
| Signal | Nummer | Beschreibung | |--------|--------|--------------| | SIGHUP | 1 | Konfiguration neu laden | | SIGINT | 2 | Interrupt (Ctrl+C) | | SIGQUIT | 3 | Quit mit Core Dump | | SIGKILL | 9 | Sofort beenden (erzwungen) | | SIGTERM | 15 | Sauber beenden (Standard) | | SIGSTOP | 19 | Pausieren | | SIGCONT | 18 | Fortsetzen |
Beispiele
# Nginx neu laden
kill -HUP $(pgrep nginx)
# Prozess pausieren
kill -STOP 1234
# Prozess fortsetzen
kill -CONT 1234
# Alle PHP-Prozesse beenden
pkill -9 phpProzess-Priorität
nice und renice
# Prozess mit niedriger Priorität starten
nice -n 19 ./heavy-script.sh
# Priorität eines laufenden Prozesses ändern
renice -n 10 -p 1234
# Alle Prozesse eines Benutzers
renice -n 5 -u usernameNice-Werte
-20 Höchste Priorität
0 Standard
+19 Niedrigste Prioritätionice (I/O-Priorität)
# Mit niedriger I/O-Priorität
ionice -c 3 dd if=/dev/zero of=/tmp/test bs=1M count=1000
# Für laufenden Prozess
ionice -c 2 -n 7 -p 1234Hintergrund-Prozesse
Jobs
# In Hintergrund starten
command &
# Laufenden Prozess in Hintergrund
Ctrl+Z
bg
# Hintergrund-Jobs anzeigen
jobs
# Job in Vordergrund holen
fg %1
# Job beenden
kill %1nohup und disown
# Prozess überlebt Logout
nohup ./long-running.sh &
# Laufenden Prozess von Terminal lösen
disown -h %1
# Ausgabe umleiten
nohup ./script.sh > output.log 2>&1 &screen und tmux
# Screen-Session starten
screen -S session-name
# Detach: Ctrl+A, D
# Wieder verbinden
screen -r session-name
# Liste aller Sessions
screen -ls# Tmux-Session starten
tmux new -s session-name
# Detach: Ctrl+B, D
# Wieder verbinden
tmux attach -t session-name
# Liste aller Sessions
tmux lsRessourcen-Limits
ulimit
# Aktuelle Limits anzeigen
ulimit -a
# Maximale offene Dateien
ulimit -n 65535
# Maximale Prozesse
ulimit -u 4096
# Speicher-Limit
ulimit -v 8388608 # 8 GB in KBPermanente Limits
# /etc/security/limits.conf
# Für Benutzer
username soft nofile 65535
username hard nofile 65535
# Für Gruppe
@webgroup soft nproc 4096
# Für alle
* soft core unlimitedcgroups
# CPU-Limit für Prozess
systemctl set-property user.slice CPUQuota=50%
# Memory-Limit
systemctl set-property user.slice MemoryLimit=2GSystemd und Services
Service-Status
# Status prüfen
systemctl status nginx
# Aktive Services
systemctl list-units --type=service
# Alle Services
systemctl list-units --type=service --all
# Failed Services
systemctl --failedService-Verwaltung
# Starten/Stoppen
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
systemctl reload nginx
# Aktivieren/Deaktivieren
systemctl enable nginx
systemctl disable nginxProzesse eines Services
# Haupt-PID
systemctl show nginx --property=MainPID
# Alle Prozesse
systemctl status nginx
# Oder:
pgrep -a nginxProzess-Informationen
/proc-Dateisystem
# Prozess-Informationen
ls /proc/1234/
# Befehlszeile
cat /proc/1234/cmdline
# Umgebungsvariablen
cat /proc/1234/environ
# Datei-Deskriptoren
ls -l /proc/1234/fd/
# Speicher-Map
cat /proc/1234/maps
# Status
cat /proc/1234/statuslsof - Offene Dateien
# Alle offenen Dateien
lsof
# Nach Prozess
lsof -p 1234
# Nach Benutzer
lsof -u username
# Nach Datei
lsof /var/log/syslog
# Netzwerk-Verbindungen
lsof -i
lsof -i :80
lsof -i tcpstrace - System-Calls
# Prozess verfolgen
strace -p 1234
# Neuen Prozess tracen
strace ls -la
# Nur bestimmte Calls
strace -e open,read,write ./program
# Mit Zeitstempeln
strace -t -p 1234
# In Datei speichern
strace -o trace.log ./programTroubleshooting
CPU-intensive Prozesse
# Top CPU-Verbraucher
ps aux --sort=-%cpu | head -10
# In top/htop nach CPU sortieren
# Taste: PSpeicher-intensive Prozesse
# Top Speicher-Verbraucher
ps aux --sort=-%mem | head -10
# Detaillierte Speicherinfo
pmap 1234Zombie-Prozesse
# Zombies finden
ps aux | awk '$8 ~ /Z/ {print}'
# Parent finden
ps -o ppid= -p $(pgrep -d, "defunct")
# Zombies können nur durch Parent beendet werdenHängende Prozesse
# In D-State (uninterruptible)
ps aux | awk '$8 ~ /D/ {print}'
# Diese warten auf I/O
# Ursache: Festplatten- oder NFS-ProblemeZusammenfassung
| Befehl | Funktion | |--------|----------| | ps aux | Alle Prozesse | | top/htop | Interaktive Übersicht | | kill -9 PID | Prozess beenden | | pgrep name | PID nach Name | | pkill name | Nach Name beenden | | nice -n 19 | Niedrige Priorität | | lsof -p PID | Offene Dateien | | strace -p PID | System-Calls |
| Signal | Verwendung | |--------|------------| | SIGTERM (15) | Sauber beenden | | SIGKILL (9) | Erzwungen beenden | | SIGHUP (1) | Config neu laden | | SIGSTOP (19) | Pausieren |
Fazit
Die Prozessverwaltung ist essentiell für die Server-Administration. htop bietet die beste interaktive Übersicht, während ps für Scripting ideal ist. Beenden Sie Prozesse möglichst mit SIGTERM, nicht SIGKILL. Nutzen Sie nice/ionice für ressourcenintensive Aufgaben und screen/tmux für lang laufende Prozesse. Das /proc-Dateisystem und lsof liefern detaillierte Informationen für Troubleshooting.