← Back to team overview

sslug-teknik team mailing list archive

Re: stop "find" efter første match

 

Jon Bendtsen wrote:
$ find / | head -n 1

Ja, det stopper find-processen ret hurtigt efter første match.

hmm, stopper det nu også find??
Jeg mener nu at find vil køre videre i baggrunden, men "head -n 1" vil
bare begrænse outputtet til den første linie!

Den køre videre i baggrunden.

Vrøvl. Det er ikke for sjov at jeg i mit indlæg siger at den stopper.

Empiri er en god ting: Vi er enige om at 'find /' på et almindeligt
desktop-system vil være tydelig i top(1), ikke? Prøv at udføre præcis
den kommando jeg gav. Døde find?

Forklaringen er at find modtager et SIGPIPE første gang den skriver
til STDOUT efter at head er færdig. Hvis det ikke får jeres
find-process til at dø, så er jeres find(1) broken. (Og hvis find(1)
ikke bliver sigpipet, så er jeres head(1) i stykker).
Ja, men dør find PRÆCIS når der er fundet den første output, eller bliver | buffered så det er først når bufferen er fuld at head bliver kørt?
Output fra find bliver via pipe givet til head når det er fundet - ikke når find er færdig. Derfor, ja Find modtager et SIGPIPE, når den første linie er fundet.

Og der er ingen buffer?

Så vidt jeg erindrer, nej - så skulle der ikke være en buffer.

/Kim

--
"Good judgment comes from experience; experience comes from bad judgment."


References