🚀 Lehrpfad 3: High-Performance & Parallelisierung

Bash 09: Parallelisierung mit xargs & parallel

Lerne Multiprocessing im Terminal: Beschleunige I/O- und Rechenoperationen mit xargs -P, GNU parallel und nativem Background Worker Management.

⚡ 1. Multithreading & Concurrency im Terminal

Standard-Shell-Skripte laufen sequentiell in einem einzigen Prozess ab. Auf Multi-Core-CPUs (8, 16 oder 64 Kerne) verschenkt das enorme RechenkapazitÀt. Durch Parallelisierung teilen wir Arbeitslasten auf:

[Sequentiell]  Task 1 ──> Task 2 ──> Task 3 ──> Task 4          (Gesamtzeit: 4x)
[Parallel -P 4] ├──> Worker 1: Task 1 ──┐
               â”œâ”€â”€> Worker 2: Task 2 ──┌──> [wait] ──> Fertig (Gesamtzeit: ~1x)
               â”œâ”€â”€> Worker 3: Task 3 ───
               â””──> Worker 4: Task 4 ──┘
# 🎯 1. xargs mit ParallelitĂ€ts-Flag -P (z.B. 4 parallele Prozesse):
cat domains.txt | xargs -P 4 -I {} curl -s -I "https://{}"

# 🎯 2. Native Bash Worker mit & und wait:
for file in *.log; do
    analyze_log "$file" &
done
wait  # Blockiert, bis ALLE Subshells im Hintergrund fertig sind

🏭 2. Didaktische Analogie: Die Supermarkt-Kassen

🛒 Der Supermarkt-Vergleich

Sequentiell (Single-Threaded): 100 Kunden stehen an einer einzigen Kasse an. Kunde 1 zahlt, dann Kunde 2, usw. Die Schlange dauert 100 Minuten.

Parallel (xargs -P 4 / Worker Pool): Der Filialleiter öffnet 4 Kassen gleichzeitig. 4 Kunden werden parallel bedient. Die Gesamtdauer sinkt auf 25 Minuten!

Throttling: Wenn nicht unendlich Kassenpersonal da ist, begrenzt ein Pool (MAX_WORKERS) die Anzahl geöffneter Schalter, damit der Laden nicht im Chaos versinkt.

📑 3. Cheat-Sheet: Parallelisierungs-Werkzeuge

Befehl / Syntax Bedeutung Beispiel
xargs -P <N> -I {} FĂŒhrt Befehl fĂŒr jedes Item mit max. N Threads aus cat urls.txt | xargs -P 8 -I {} curl -O {}
command & Startet Befehl/Subshell asynchron im Hintergrund backup_db &
$! PID des zuletzt im Hintergrund gestarteten Prozesses pids+=($!)
wait "${pids[@]}" Wartet auf Beendigung aller gelisteten Prozess-IDs wait "${pids[@]}"
jobs -rp Listet PIDs aller aktuell laufenden Hintergrundjobs [ $(jobs -rp | wc -l) -ge 4 ]

🧠 Diagnostischer Selbst-Check

ÜberprĂŒfe dein VerstĂ€ndnis der Kernkonzepte und typischen CLI-/Git-Fallen, bevor du die Kommandos in der Praxis anwendest.

🎯 Aufgaben & Checkliste in aufgabe.sh

💡 DevOps Pro-Tipp: CPU-Kerne dynamisch ermitteln

Verwende nproc oder $(grep -c ^processor /proc/cpuinfo), um die Thread-Anzahl automatisch an die Hardware des Servers anzupassen!

đŸ’» In Web-IDE öffnen → ← ZurĂŒck zu Bash 08 Weiter zu Bash 10 →