Kas ir Stderr?

Stderr, kas pazīstams arī kā standarta kļūda, ir noklusējuma failu deskriptors, kurā process var rakstīt kļūdas ziņojumus.

Unix tipa operētājsistēmās, piemēram, Linux, MacOS X un BSD, stderr definē POSIX standarts. Tā noklusējuma faila deskriptora numurs ir 2 .

Terminālā standarta kļūda ir lietotāja ekrānā.

Stderr Linux komandrindā

Bash režīmā standarta kļūdu var novirzīt komandrindā. Stderr novirzīšana var būt noderīga, ja ir nepieciešams uztvert jebkādus kļūdas ziņojumus atsevišķam žurnāla failam vai pilnībā paslēpt kļūdas ziņojumus.

Piemēram, apsveriet šādu meklēšanas komandu:

 atrast / -iname '* kaut * * 
 / usr / share / doc / something / usr / share / doc / kaut kas / piemēri / something_random atrast: `/ run / udisks2 ': Atļauja liegta:` / run / wpa_supplicant': Atļauja liegta / usr / share / something / usr / spēles / kaut kas 

Mēs saņemam kļūdas, jo atrast mēģina meklēt dažus sistēmas direktorijus, kuriem nav atļaujas lasīt. Līnijas, kas saka "Atļauja liegta", ir kļūdas ziņojumi un tika rakstītas stderr . Pārējās līnijas tika rakstītas uz stdout (standarta izejas). Pēc noklusējuma tie abi tiek parādīti terminālī.

Lai paslēptu stderr, mēs varam tos novirzīt, atsaucoties uz standarta kļūdu faila deskriptora numuru 2 un "novirzīšanas izeju" operatoru, > .

 atrast / -iname '* kaut ko *' 2> / dev / null 
 / usr / share / doc / kaut kas / usr / share / doc / kaut kas / piemēri / something_random / usr / share / kaut kas / usr / spēles / kaut kas 

Kļūdas vairs netiek parādītas, jo visas izejas uz stderr tika novirzītas uz / dev / null, īpašo ierīci Linux, kas "nekur nav".

Mēs varētu arī novirzīt visas kļūdas failā:

 atrast / -iname '* kaut ko *' 2> output.txt 
 / usr / share / doc / kaut kas / usr / share / doc / kaut kas / piemēri / something_random / usr / share / kaut kas / usr / spēles / kaut kas 

Tagad, ja jūs izmetat izejas.txt saturu, jūs redzēsiet, ka tajā ir saglabāti kļūdas ziņojumi:

 cat output.txt 
 atrast: `/ run / udisks2 ': atļauja liegta:` / run / wpa_supplicant': atļauja liegta 

Sīkāku informāciju par to, kā novirzīt datu plūsmas, sk.

Kļūdas ziņojums, operētājsistēmas noteikumi