Fehlerkanal, Fehlersuche: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 1: | Zeile 1: | ||
| + | == 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 === | ||
| + | |||
| + | {| border=1 cellpadding="3" | ||
| + | ! 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 | ||
| + | |||
| + | |||
== Fehlerkanal und Fehlersuche == | == Fehlerkanal und Fehlersuche == | ||
| Zeile 39: | Zeile 73: | ||
;Beispiel | ;Beispiel | ||
| + | <syntaxhighlight lang="bash"> | ||
#!/bin/bash | #!/bin/bash | ||
echo "Starte Backup..." | echo "Starte Backup..." | ||
tar czf /backup/etc.tgz /etc 2> /var/log/backup-error.log | tar czf /backup/etc.tgz /etc 2> /var/log/backup-error.log | ||
echo "Fertig." | echo "Fertig." | ||
| + | </syntaxhighlight> | ||
* In der Datei /var/log/backup-error.log werden nur Fehlermeldungen gespeichert. | * 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 | ||
| + | |||
| + | <syntaxhighlight lang="bash"> | ||
| + | #!/bin/bash | ||
| + | set -x # Debugmodus aktivieren | ||
| + | echo "Starte" | ||
| + | ls /nichtda | ||
| + | set +x # Debugmodus deaktivieren | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | === 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. | ||
=== Debugging von Skripten === | === Debugging von Skripten === | ||
Version vom 17. Oktober 2025, 14:11 Uhr
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
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.
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.