Entwicklung / Systemprogrammierung / Linux / Linux Praxis-Handbuch
Linux Administration & CLI – Das Praxis-Handbuch
Linux ist das fundamentale Betriebssystem moderner Server-Infrastrukturen, Cloud-Plattformen, Container-Umgebungen und Entwickler-Workstations. Die Beherrschung der Linux-Kommandozeile (CLI), des Dateisystems, der Prozess- und Benutzerverwaltung, von systemd, Netzwerk-Tools, Shell-Skripten und Systemdiagnosen bildet das Rückgrat jeder erfolgreichen IT-Engineering-Arbeit.
Dieses Handbuch bietet eine strukturierte Übersicht über grundlegende Befehle, Textverarbeitung (grep, awk, sed), Rechteverwaltung, Disk- & LVM-Management, systemd, Netzwerkdiagnose und Shell-Scripting.
🚀 1. Dateisystem, Navigation & FHS Standard
Der Filesystem Hierarchy Standard (FHS)
Unter Linux ist alles eine Datei ("Everything is a file"). Die Ordnerstruktur folgt einem festen Standard:
Die wichtigsten Navigations-Befehle
Datei- & Ordnerverwaltung
# Navigation & Verzeichnisanzeige
pwd # Aktuelles Verzeichnis anzeigen
ls -la # Ausführliche Liste inkl. versteckter Dateien
cd /var/log # Verzeichnis wechseln
# Erstellen & Löschen
mkdir -p projekt/src # Verschachtelte Ordner erstellen
touch projekt/README.md # Leere Datei anlegen / Zeitstempel aktualisieren
cp -r projekt/ projekt_bkp # Ordner rekursiv kopieren
mv projekt_bkp /tmp/ # Verschieben oder Umbenennen
rm -rf /tmp/projekt_bkp # Rekursiv und erzwungen löschen
Umgebungsvariablen & Hilfe
echo $PATH # Suchpfad für ausführbare Befehle
export MY_VAR="Wert" # Umgebungs-Variable setzen
man systemctl # Handbuch-Seite eines Befehls öffnen
which python3 # Pfad eines installierten Programms anzeigen
🔒 2. Rechteverwaltung, Links & Textverarbeitung
Dateirechte & Ownership (chmod, chown)
# Rechte im Detail: r (Read=4), w (Write=2), x (Execute=1)
# Beispiel: rwxr-xr-- (Owner: 7, Group: 5, Others: 4)
chmod 755 script.sh # Owner: Full, Group/Others: Read+Execute
chmod +x script.sh # Ausführrecht hinzufügen
# Eigentümer und Gruppe ändern
chown nginx:www-data /var/www/html -R
Soft Links (symlink) vs. Hard Links
- Soft Link (
ln -s target link): Ein Zeiger auf den Dateipfad. Funktioniert auch über Dateisystemgrenzen hinweg. - Hard Link (
ln target link): Ein zweiter Inode-Eintrag, der direkt auf dieselben Datenblöcke auf der Festplatte zeigt.
Die Linux Textverarbeitungs-Pipeline (pipe)
Praxisbeispiele Text-Tools
# grep: Nach Mustern suchen (case-insensitive & Zeilennummern)
grep -rnI "database_password" /etc/
# awk: Spaltenbasierte Extraktion (Zeige IP-Adresse aus Access-Logs)
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -n 10
# sed: Suchen und Ersetzen in Dateien
sed -i 's/PORT=8080/PORT=9000/g' config.env
# tail & tee: Echtzeit-Logs verfolgen und gleichzeitig in Datei schreiben
journalctl -fu docker.service | tee /tmp/docker_debug.log
⚡ 3. Prozess- Management & Server-Review
Prozesskontrolle (ps, top, kill)
Jeder laufende Prozess besitzt eine eindeutige PID (Process ID):
# Prozesse finden und auflisten
ps aux | grep python3 # Alle laufenden Python-Prozesse anzeigen
htop # Interaktiver Prozess-Manager (CPU, RAM, Swap)
pgrep -l nginx # PIDs eines bestimmten Prozesses finden
# Signale an Prozesse senden
kill -15 <PID> # SIGTERM: Gefälliges Beenden (Sauberes Aufräumen)
kill -9 <PID> # SIGKILL: Sofortiges hartes Beenden
pkill -f "node server.js" # Alle Prozesse nach Namensmuster beenden
Server Review & Systemressourcen
uptime/w: Zeigt die Systemlaufzeit und die Load Average (1, 5, 15 Minuten) an.free -h: Übersicht des belegten und freien Arbeitsspeichers (RAM & Swap).df -h: Speicherauslastung aller gemounteten Dateisysteme.du -sh /var/*: Speicherverbrauch einzelner Ordner ermitteln.
⚙️ 4. Service Management mit systemd
systemd ist das Standard-Init-System moderner Linux-Distributionen (Ubuntu, Debian, RHEL, Arch).
Erstellen eines benutzerdefinierten Systemd-Dienstes
Legen Sie eine Datei unter /etc/systemd/system/mein-dienst.service an:
[Unit]
Description=Mein Python Backend Service
After=network.target postgresql.service
[Service]
Type=simple
User=www-data
WorkingDirectory=/var/www/backend
ExecStart=/var/www/backend/.venv/bin/python main.py
Restart=always
RestartSec=5
Environment=PORT=8080
[Install]
WantedBy=multi-user.target
Befehle zur Steuerung
sudo systemctl daemon-reload # Neue Unit-Dateien einlesen
sudo systemctl enable --now mein-dienst # Dienst aktivieren & sofort starten
sudo systemctl status mein-dienst # Status & letzte Logzeilen prüfen
sudo journalctl -u mein-dienst -f -n 100# Echtzeit-Logs verfolgen
💽 5. Speichermedien, Dateisysteme & LVM
LVM (Logical Volume Manager) Struktur
Festplatten einbinden (fdisk, mkfs, mount)
# Partitionierung & Dateisystem erstellen
fdisk /dev/sdb # Neue Partition anlegen
mkfs.ext4 /dev/sdb1 # ext4 Dateisystem formatieren
# Mounten und automatisieren via /etc/fstab
mkdir -p /mnt/data
mount /dev/sdb1 /mnt/data
# /etc/fstab Eintrag für dauerhaften Reboot-Schutz:
# UUID=xxxx-xxxx-xxxx-xxxx /mnt/data ext4 defaults 0 2
🌐 6. Netzwerk, Firewall & SSH
Netzwerkdiagnose & Routing
ip addr/ip route: IP-Adressen und Schnittstellen bzw. Routing-Tabelle anzeigen.ss -tulnp: Alle lauschenden Ports und dazugehörigen Prozesse anzeigen.dig domain.com/nslookup: DNS-Auflösung überprüfen.ping&traceroute: Erreichbarkeit und Paketlaufzeiten im Netzwerk prüfen.
SSH & Sichere Dateiübertragung
# SSH-Schlüsselpaar generieren & auf Server kopieren
ssh-keygen -t ed25519 -C "admin@unternehmen.de"
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server-ip
# Dateien sicher synchronisieren via rsync
rsync -avz --progress /lokaler/ordner/ user@remote-server:/remote/ziel/
📜 7. Shell-Skripting (Bash Automation)
Ein sauberes Bash-Skript erfordert Fehlerbehandlung und Variablen-Validierung:
#!/bin/bash
set -euo pipefail # Stoppt bei Fehlern (e), ungesetzten Variablen (u) & Pipe-Fehlern (pipefail)
LOG_FILE="/var/log/backup.log"
BACKUP_DIR="/var/backups/db"
log() {
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}
log "Starte Datenbanksicherung..."
mkdir -p "$BACKUP_DIR"
if pg_dumpall -U postgres > "$BACKUP_DIR/db_backup_$(date +%F).sql"; then
log "Backup erfolgreich abgeschlossen."
else
log "FEHLER: Backup fehlgeschlagen!" >&2
exit 1
fi