Obsah

stderr (Standard Error)

stderr je standardní datový proud určený pro chybové zprávy. V systémech typu Unix a Windows má přiřazen deskriptor souboru (file descriptor) 2. Ačkoliv se standardně zobrazuje na stejné obrazovce jako stdout, jedná se o technicky nezávislý kanál.

1. Proč existuje stderr?

Představte si, že používáte pipeline ke zpracování dat:

Pokud by během čtení souboru došlo k chybě (např. nedostatečná práva) a tato chyba by byla poslána do `stdout`, stala by se součástí vašich výsledných dat. Díky tomu, že chyba odteče přes stderr, uvidíte ji na obrazovce, ale vaše výsledná data v souboru vysledek.txt zůstanou „čistá“.

2. Manipulace se stderr v shellu

V příkazové řádce můžete se stderr pracovat pomocí čísla jeho deskriptoru (2):

Přesměrování chyb do souboru

Pokud chcete chyby uložit zvlášť a výsledky nechat na obrazovce:

Úplné potlačení chyb

Často při skriptování nechceme, aby uživatel viděl varování, která nejsou kritická. Chyby pošleme do „černé díry“ (/dev/null):

Sloučení do jednoho proudu

Častý zápis pro uložení všeho (dat i chyb) do jednoho souboru:

(Znamená to: „Pošli proud 2 tam, kam právě teče proud 1.“)

3. Rozdíly mezi standardními proudy

Proud Jméno Deskriptor Cíl (Standardně)
stdin Standard Input 0 Klávesnice
stdout Standard Output 1 Terminál (Monitor)
stderr Standard Error 2 Terminál (Monitor)

4. Využití v programování

Programátoři by měli striktně rozlišovat, kam co vypisují:

Při správném použití může monitorovací systém (např. v rámci MLOps) automaticky zachytit pouze zprávy ze stderr a okamžitě poslat notifikaci správci, zatímco běžné logy ze stdout jen ukládá k pozdější analýze.

5. Buffering (Vyrovnávací paměť)

Důležitý rozdíl mezi `stdout` a `stderr` je v tom, jak se data vypisují:

Zajímavost: Pokud v Linuxu napíšete příkaz, který neexistuje, chybová zpráva „-bash: xyz: command not found“ pochází právě ze stderr.

Zpět na Linux