Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: jenikosft 14 Dubna 2011, 11:11:46
-
Ahoj, potřebuji zpacovávat proud dat, tak aby se můj script spustil pokaždé když v něm něco přibide...
Vypadá to asi takhle cat /cesta/ke/streamu | grep neco | muj script
když je ale obsah mého scriptu echo "Neco pribylo"
, tak bych chtěl aby se pokaždé když něco přibyde vytisklo - "Neco pribilo" - jak na to?
-
?
tail -f stream | while read foo; do echo neco pribylo; done
-
tvrďácký, dík moc...
-
Mužu se zeptat, jak teda vypíšu, to co přibilo?
-
spis pribylo, ne?
tail -f stream | while read foo; do echo tohle je hlavni smycka zpracovavajiciho programu; echo $foo ; echo 'za $foo se dosadil precteny radek ze streamu'; done
-
tak aby toho nebylo málo, stream mi teče z programu a když dám
program | while read foo; do echo tohle je hlavni smycka zpracovavajiciho programu; echo $foo ; echo 'za $foo se dosadil precteny radek ze streamu'; done
tak to sice nakonec vyteče ale až za nějakou dobu a všechno pohromadě, když si pustím jen program tak ty srandy přibývají mnohem rychleji... čím to?
-
ocividne tam bude buffer...
doporucuji precist
http://www.pixelbeat.org/programming/stdio_buffering/
http://www.groupsrv.com/linux/about160147.html
necetl jsem to sam cele (ale na prvni pohled jsem na to nenarazil), castecne jde ovlivnit buffer pipeliny i pomoci ulimit -p