Was ist Stderr?

Standardfehlerabbildung

Stderr, auch als Standardfehler bekannt, ist der Standarddateideskriptor, in den ein Prozess Fehlermeldungen schreiben kann.

In Unix-ähnlichen Betriebssystemen wie Linux, macOS X und BSD ist stderr durch den POSIX-Standard definiert. Seine standardmäßige Dateideskriptornummer ist 2.

Im Terminal wird der Standardfehler standardmäßig auf dem Bildschirm des Benutzers angezeigt.

Stderr in der Linux-Befehlszeile

In Bash kann der Standardfehler auf der Befehlszeile umgeleitet werden. Das Umleiten von stderr kann nützlich sein, wenn Sie Fehlermeldungen in einer separaten Protokolldatei erfassen oder die Fehlermeldungen vollständig ausblenden müssen.

Betrachten Sie beispielsweise den folgenden Suchbefehl:

 find / -iname '*something*'
 /usr/share/doc/something
 /usr/share/doc/something/examples/something_random
 find: `/run/udisks2': Permission denied
 find: `/run/wpa_supplicant': Permission denied
 /usr/share/something
 /usr/games/something

Wir erhalten Fehler, weil find versucht, einige Systemverzeichnisse zu durchsuchen, für die wir keine Leseberechtigung haben. Die Zeilen mit der Aufschrift „Permission denied“ sind Fehlermeldungen und wurden in stderr geschrieben. Die anderen Zeilen wurden nach stdout (Standardausgabe) geschrieben. Standardmäßig werden beide auf dem Terminal angezeigt.

Um stderr auszublenden, können wir sie umleiten, indem wir auf die Dateideskriptornummer des Standardfehlers, 2, und einen „Umleitungsausgabe“-Operator > verweisen.

 find / -iname '*something*' 2>/dev/null
 /usr/share/doc/something
 /usr/share/doc/something/examples/something_random
 /usr/share/something
 /usr/games/something

Die Fehler werden nicht mehr angezeigt, da alle Ausgaben an stderr nach /dev/null umgeleitet wurden, dem speziellen Gerät in Linux, das “nirgendwo hingeht”.

Wir könnten auch alle Fehler in eine Datei umleiten:

 find / -iname '*something*' 2>output.txt
 /usr/share/doc/something
 /usr/share/doc/something/examples/something_random
 /usr/share/something
 /usr/games/something

Wenn Sie nun den Inhalt von output.txt durchsuchen, sehen Sie, dass die Fehlermeldungen dort gespeichert wurden:

 cat output.txt
 find: `/run/udisks2': Permission denied
 find: `/run/wpa_supplicant': Permission denied

Ausführliche Informationen zum Umleiten von Datenströmen finden Sie unter Umleitung in Bash.

Fehlermeldung, Bedingungen des Betriebssystems

Neueste Artikel
Vielleicht möchten Sie lesen

LEAVE A REPLY

Please enter your comment!
Please enter your name here