Fehlerkanal, Fehlersuche: Unterschied zwischen den Versionen

Aus Xinux Wiki
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
  1. !/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.