Kaj je Stderr?

Stderr, znan tudi kot standardna napaka, je privzeti deskriptor datotek, kjer lahko proces napiše sporočila o napakah.

V operacijskih sistemih, podobnih Unixu, kot so Linux, MacOS X in BSD, je stderr definiran s standardom POSIX. Njegova privzeta številka deskriptorja datoteke je 2 .

Standardna napaka v terminalu je privzeta za uporabniški zaslon.

Stderr na ukazni vrstici Linuxa

V bash lahko standardno napako preusmerimo v ukazno vrstico. Preusmerjanje stderrja je lahko koristno, če morate v ločeno datoteko dnevnika zajeti kakršna koli sporočila o napakah ali v celoti skriti sporočila o napakah.

Upoštevajte na primer naslednji ukaz:

 najdi / -iname "* nekaj *" 
 / usr / share / doc / nekaj / usr / share / doc / nekaj / examples / something_random najdi: `/ run / udisks2 ': Dovoljenje zavrnjeno:` / run / wpa_supplicant': Dovoljenje zavrnjeno / usr / share / something / usr / igre / nekaj 

Dobivamo napake, ker iskanje išče nekaj sistemskih imenikov, ki jih nimamo dovoljenja za branje. Vrstice, ki pravijo "Dovoljenje zavrnjeno", so sporočila o napakah in so bila napisana v stderr . Druge vrstice so bile zapisane v stdout (standardni izhod). Privzeto se oba prikažeta na terminalu.

Če želite skriti stderr, jih lahko preusmerimo s sklicevanjem na številko deskriptorja datoteke standardne napake, 2 in operaterja »preusmeritvenega izhoda« > .

 find / -iname "* nekaj *" 2> / dev / null 
 / usr / share / doc / nekaj / usr / share / doc / nekaj / Primeri / something_random / usr / share / nekaj / usr / igre / nekaj 

Napake niso več prikazane, ker je bil celoten izhod v stderr preusmerjen na / dev / null, posebno napravo v Linuxu, ki "nikamor ne gre."

Vse napake lahko preusmerimo tudi v datoteko:

 find / -iname '* something *' 2> output.txt 
 / usr / share / doc / nekaj / usr / share / doc / nekaj / Primeri / something_random / usr / share / nekaj / usr / igre / nekaj 

Zdaj, če izločite vsebino output.txt, boste videli sporočila o napakah, ki so bila tam shranjena:

 cat output.txt 
 find: `/ run / udisks2 ': Dovoljenje zavrnjeno:` / run / wpa_supplicant': Dovoljenje zavrnjeno 

Za podrobne informacije o preusmerjanju podatkovnih tokov glejte preusmeritev v bash.

Sporočilo o napaki, izrazi operacijskega sistema