[linux] Re: Bufferlengte van een redirect aanpassen

Wybo Dekker wybo op servalys.nl
Do Feb 21 17:29:36 CET 2008


On Thursday 21 February 2008 16:31:08 Paul Slootman wrote:
> On Thu 21 Feb 2008, Wybo Dekker wrote:
> > ja, inderdaad, en dat is dus het verschil tussen less en tail -f; die
> > laatste heeft geen linefeed nodig.
>
> WTF?

Eh... waar staat dit voor?

> Als het commando waar de teksten uitkomen z'n buffers niet flusht, 
> dan maakt het niet uit waarmee je de output file probeert te lezen.
>
> Vergelijk:
>
> perl -e 'print "een "; sleep 5; print "twee\n";'
> perl -e '$| = 1; print "een "; sleep 5; print "twee\n";'

Je hebt gelijk!
Maar toch begrijp ik dan iets niet. Maak een script genaamd `commando' met 
daarin:

#!/bin/sh
while true; do 
echo -n `date`
sleep 1
done

Run dat script op de achtergrond en redirect de output naar een file `log':

$ sh commando > log &

En doe tail -f op die log:

$ tail -f log

Je ziet dan om de seconde de output met de output van `date' verlengd worden, 
zonder linefeeds.
Ik dacht dat tail detecteerde waar z'n input vandaan kwam en dat-ie de 
betreffende shell flushte. Maar bij nader inzien: tail zou dan moeten 
uitzoeken wie die log genereert... dat zal dus wel niet. Maar wat gebeurt er 
dan wel??

-- 
Wybo



More information about the Linux mailing list