Dan Uscatu wrote:

probabil gindeai "tee" si ai scris "cat".
anyway, problema initiala chiar se rezolva cu -w, nu cu redirect. doar ca dan nu stia asta.


um... stiam de -w, am zis. in continuare as vrea sa stiu de ce redirectarea in fisier nu produce nimic. nici in timp ce merge (chiar dupa multa vreme), nici dupa ce-l omor. am incercat si cu | tee fisier, nu mai produce nimic nici pe ecran.

ba produce da in 4 kilo chunks. cum e si normal daca nu ai outputu buffered. redirectarea ta de fisier va merge daca scrii 1> in loc de > (fortand astfel buffering). De asemenea daca programul se termina cu SIGTERM nu cu SIGKILL, se va apela exit care goleste bufferele, deci si asa merge. mai poti sa folosesti si programe care stiu de unbuffered stream pe stdin, cum ar fi tcpdump | grep * > lola. e lame, useless use of grep, da merge.

Tee face 2 lucruri, citeste buffered de pe stdin si scoate unbuffered pe stdout, deci metoda cu tee e shit, tot tre sa astepti sa-ti vina 4k din pipe ca sa scoata ceva, din cauza citirii facute de tee din pipe, nu din cauza lui tcpdump, care saracu face exact ceea ce trebuie sa faca, si nici a pipe-ului. (pipe-urile create cu | parca erau unbuffered la ambele capete, deci teoretic delayu e minim, afaik).

Totusi cea mai simpla metoda e sa folosesti (corect) -l a lui tcpdump. Sau -w (mai bine). sau in caz extrem 1> (ca lameru de mine, care nu a RTFM inainte sa tcpdump, si acu nu se poate dezbara) (#tcpdump 1> ./data).

Dragos "old habits die hard".



_______________________________________________
RLUG mailing list
[email protected]
http://lists.lug.ro/mailman/listinfo/rlug

Raspunde prin e-mail lui