Was ist Stderr?

Stderr, auch als Standardfehler bezeichnet, ist der Standarddateibeschreiber, in den ein Prozess Fehlermeldungen schreiben kann.

In Unix-ähnlichen Betriebssystemen wie Linux, macOS X und BSD wird stderr durch den POSIX-Standard definiert. Die Standarddateibeschreibernummer lautet 2 .

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

Stderr in der Linux-Befehlszeile

In Bash können Standardfehler in der Befehlszeile umgeleitet werden. Das Umleiten von stderr kann hilfreich sein, wenn Sie Fehlermeldungen in einer separaten Protokolldatei erfassen oder die Fehlermeldungen vollständig ausblenden möchten.

Betrachten Sie zum Beispiel den folgenden Befehl zum Suchen :

 find / -iname '* etwas *' 
 / usr / share / doc / etwas / usr / share / doc / etwas / beispiele / something_random find: `/ run / udisks2 ': Berechtigung abgelehnt find:` / run / wpa_supplicant': Berechtigung abgelehnt / usr / share / etwas / usr / Spiele / etwas 

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

Um stderr auszublenden, können wir sie umleiten, indem wir auf die Dateideskriptor-Nummer 2 von Standardfehler und einen Operator "Ausgabe umleiten" > verweisen.

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

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

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

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

Wenn Sie nun den Inhalt von output.txt überarbeiten, werden die Fehlermeldungen dort gespeichert:

 cat output.txt 
 find: `/ run / udisks2 ': Berechtigung abgelehnt find:` / run / wpa_supplicant': Berechtigung abgelehnt 

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

Fehlermeldung, Bedingungen des Betriebssystems