- Dynamic Sidebar mit window.COURSES_MANIFEST für 13 Kurse (216 Kapitel) - Kurswechsler Dropdown mit Direktnavigation - Fortschrittsanzeige mit Solved-Checkmarks (✓) aus localStorage - Responsive Off-Canvas Drawer mit Floating Action Button (☰ Kapitel) & Backdrop auf Mobile/Tablets - Web-IDE Topbar Drawer-Button (☰ Kapitel) für unterbrechungsfreien Vollbild-Editor - Saubere Bereinigung redundanter statischer Legacy-Sidebars |
||
|---|---|---|
| .. | ||
| aufgabe.sh | ||
| index.html | ||
| musterloesung.sh | ||
| README.md | ||
| test_aufgabe.sh | ||
Bash 08: Robuste Skripte, Strict Mode & Debugging 🛡️
Willkommen zu Modul 08 (Abschluss von Lehrpfad 2) des Linux Bash & DevOps Lehrpfads!
In diesem Modul lernst du, wie professionelle DevOps-Engineers ausfallsichere, unzerstörbare Shell-Skripte für Produktivumgebungen schreiben: Der Bash Strict Mode (set -euo pipefail), Signal-Traps (trap ... EXIT), Concurrency-Locks mit flock, strukturiertes Logging und Tracing mit set -x.
💡 1. Das Wichtigste in Kürze
Der unschlagbare Bash Strict Mode
Standardmäßig ignoriert Bash Fehler und macht einfach weiter – was in Produktionsskripten verheerend sein kann. Der Strict Mode stoppt sofort:
#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n\t'
set -e(errexit): Bricht das Skript sofort ab, wenn ein Befehl fehlschlägt (Exit != 0).set -u(nounset): Behandelt ungesetzte Variablen als schweren Fehler (schützt vor Katastrophen wierm -rf /tmp/$SUBDIR/wenn$SUBDIRleer ist!).set -o pipefail: Die Pipeline schlägt fehl, wenn irgendein Teil fehlschlägt (nicht nur der letzte).
Cleanup mit trap & mktemp
Egal ob ein Skript erfolgreich endet, crasht oder mit STRG+C abgebrochen wird – der EXIT-Trap räumt immer zuverlässig auf:
TEMP_DIR=$(mktemp -d)
trap 'rm -rf "$TEMP_DIR"' EXIT
Exklusive Locks mit flock
Verhindert, dass ein Cronjob oder Worker mehrfach parallel startet:
flock -n /var/lock/backup.lock -c "/opt/scripts/do_backup.sh" || {
echo "Backup läuft bereits!" >&2
exit 1
}
🎯 Aufgaben in aufgabe.sh
- TODO 1 (
aktiviere_strict_mode): Konfiguriereset -euo pipefail. - TODO 2 (
devops_logger): Formatiere Logzeilen mit Timestamp und trenne Fehlerkanäle (ERROR/FATAL auf stderr, INFO auf stdout). - TODO 3 (
erstelle_temp_verzeichnis_mit_cleanup): Erstelle mitmktemp -dein Verzeichnis und sichere es mittrap 'rm -rf ...' EXIT. - TODO 4 (
fuehre_exklusiv_mit_lock_aus): Schütze Befehlsausführungen mitflock -n. - TODO 5 (
debug_trace_ausfuehren): Aktiviere temporärset -xfür Tracing und stelle den Zustand mitset +xwieder her.
🧪 Tests ausführen
bash test_aufgabe.sh