GNU/Linux >> Znalost Linux >  >> Linux

Zobrazit na obrazovce pouze Stderr, ale zapsat do souboru Stdout i Stderr?

Jak toho mohu pomocí BASH magic dosáhnout?
Chci na obrazovce vidět pouze výstup stderr,
ale chci, aby stdout i stderr byly zapsány do souboru.

Vysvětlení:
Chci, aby stdout i stderr skončily ve stejném souboru. V pořadí, v jakém se dějí.
Bohužel žádná z níže uvedených odpovědí to nedělá.

Přijatá odpověď:

I bez jakéhokoli přesměrování nebo s ničím jiným než >logfile 2>&1 , není zaručeno, že výstup uvidíte v pořadí generování.

Pro začátek bude stdout z aplikace ukládán do vyrovnávací paměti (do tty) nebo vyrovnávací paměti (do potrubí), ale stderr je bez vyrovnávací paměti, takže vztahy mezi pořadím výstupu jsou, pokud jde o čtenáře, narušeny. Následné fáze v jakémkoli potrubí, které byste mohli vymyslet, nezíská deterministicky uspořádaný přístup ke dvěma proudům (jsou to koncepčně věci, které se dějí paralelně a vy vždy podléháte plánovači – pokud v době, kdy váš čtenář dostane řez, autor již zapsáno do obou kanálů, nelze určit, která byla první).

„Pořadí, v jakém se dějí“ je skutečně známé pouze aplikaci. Uspořádání výstupu přes stdout/stderr je dobře známý – možná klasický – problém.


Linux
  1. Jak přesměrovat výstup do souboru a Stdout v Linuxu

  2. Nakonfigurovat Shell pro tisk Stderr a Stdout v různých barvách?

  3. Výstup do Stdout a zároveň Grep do souboru?

  1. Jak přesměrovat pouze Stderr?

  2. Je možné, aby výstup stdout a stderr měl různé barvy v XTerm nebo Konsole?

  3. Jak přesměrovat stderr a stdout na různé soubory ve stejném řádku ve skriptu?

  1. Způsob, jak přesměrovat výstup programu, a přesto jej přejít na Stdout?

  2. Přesměrování a výstup potrubí?

  3. Jak omezit výstup ls tak, aby zobrazoval pouze název souboru, datum a velikost?