GNU/Linux >> Znalost Linux >  >> Linux

Proč se mi objevuje kočka:chyba zápisu:Zlomená trubka zřídka a ne vždy

Důvodem je, že potrubí je uzavřeno grep když má ještě nějaká data ke čtení z cat . Signál SIGPIPE je chycen kočkou a odejde.

Co se obvykle děje v potrubí je, že shell běží cat v jednom procesu a grep v jiném. Standardní hodnota cat je připojen k zapisovacímu konci roury a stdin grep do konce čtení. Stalo se grep zasáhlo hledání vzoru, které neexistovalo a okamžitě skončilo, což způsobilo uzavření čteného konce potrubí, což cat nelíbí, protože má nějaká další data k zápisu do roury. Protože se akce zápisu odehrávají na jiném konci, který byl uzavřen, SIGPIPE je zachycen kódem cat na kterém okamžitě vystoupí.

V takovém triviálním případě můžete použití kanálu zcela odstranit a spustit jej jako grep "pattern" file.txt když je obsah souboru zpřístupněn přes stdin grep ze kterého by to mohlo číst.


Linux
  1. Proč získáte cp:vynechání chyby adresáře v Linuxu a jak to vyřešit

  2. Proč mi Grep -o -w neposkytuje očekávaný výkon na Mac OS X?

  3. Proč je to Rm -rf a ne Rmdir -rf?

  1. Proč Rsync selže s rozbitým potrubím (32), chyba v zásuvce Io (kód 10) na Io.c (820)?

  2. Proč můj symbolický odkaz vytváří soubor a ne složku?

  3. Výhody katovacího pilníku a potrubí do grep

  1. Linux – proč používáme Su – a nejen Su?

  2. Proč chmod +w nedává oprávnění k zápisu ostatním (o)

  3. Proč můj crontab nefunguje a jak jej mohu odstranit?