Fehlerkanal, Fehlersuche
Version vom 17. Oktober 2025, 14:03 Uhr von Thomas.will (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „== Fehlerkanal und Fehlersuche == In der Bash gibt es verschiedene sogenannte '''Standard-Streams''', über die Programme Daten senden oder empfangen. Diese s…“)
Fehlerkanal und Fehlersuche
In der Bash gibt es verschiedene sogenannte Standard-Streams, über die Programme Daten senden oder empfangen. Diese sind für die Fehleranalyse und das Debugging von Skripten besonders wichtig.
Standard-Streams
| Kanal | Beschreibung | Datei-Deskriptor |
|---|---|---|
| Standard Input | Eingabe (z. B. Tastatur, Datei) | 0 |
| Standard Output | Normale Ausgabe von Befehlen | 1 |
| Standard Error | Fehlermeldungen von Befehlen | 2 |
- Unter Linux werden alle drei Kanäle als Dateien behandelt.
- Sie können getrennt voneinander umgeleitet oder in Dateien geschrieben werden.
Beispiel: Standard- und Fehlerausgabe trennen
- ls /etc /nichtda
→ listet den Inhalt von /etc auf, zeigt aber für /nichtda eine Fehlermeldung auf STDERR.
- Nur Fehlerausgabe in Datei schreiben
- ls /etc /nichtda 2> fehler.txt
- Nur Standardausgabe in Datei schreiben
- ls /etc /nichtda 1> ausgabe.txt
- Beide Ausgaben in eine Datei umleiten
- ls /etc /nichtda > alles.txt 2>&1
Fehlerkanäle im Skript verwenden
- In Skripten kann die Fehlerspur zur Diagnose in eine Datei geschrieben werden.
- So kann ein Administrator den Ablauf später nachvollziehen.
- Beispiel
#!/bin/bash echo "Starte Backup..." tar czf /backup/etc.tgz /etc 2> /var/log/backup-error.log echo "Fertig."
- In der Datei /var/log/backup-error.log werden nur Fehlermeldungen gespeichert.
Debugging von Skripten
- Bash bietet verschiedene Möglichkeiten, um Skripte schrittweise oder mit zusätzlicher Ausgabe zu debuggen.
- Syntaxprüfung ohne Ausführung
- bash -n skript.sh
→ prüft nur die Syntax, führt das Skript aber nicht aus.
- Debugmodus mit Kommandoanzeige
- bash -x skript.sh
→ zeigt jedes ausgeführte Kommando vor der Ausführung an.
- Innerhalb eines Skripts aktivieren
#!/bin/bash set -x # Debugmodus aktivieren echo "Starte" ls /nichtda set +x # Debugmodus deaktivieren
Typische Vorgehensweise bei Fehlersuche
- Syntax mit bash -n prüfen.
- Skript im Debugmodus (bash -x) ausführen.
- Fehlerkanäle gezielt in Logdateien umleiten.
- Rückgabewert mit echo $? auswerten.
- Schrittweise Befehle isolieren und testen.
Hinweis
- Fehlermeldungen über STDERR werden nicht von der Standardausgabe beeinflusst.
- Durch sauberes Trennen von Standard- und Fehlerkanal lässt sich die Ausgabe von Skripten deutlich besser kontrollieren und auswerten.