sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #98908
Re: stop "find" efter første match
Peter Makholm <peter@xxxxxxxxxxx> writes:
> Jesper Thorup Nielsen <s_teknik@xxxxxxxxxxxxxxx> writes:
>
>> Er der en metode til at stoppe find efter første match
>
> $ find / | head -n 1
>
> Ja, det stopper find-processen ret hurtigt efter første match.
I praksis vil det for det meste virke. Problemt er dog ikke buffering,
men præcist hvornår der bliver sendt en sigpipe til find. Det gør der
tidligst efter andet match og hvis man har ret få matches på et stort
stort filsystem, kan dette blive et problem.
Så istedet for at bare forsvinde har vi brug for en implementation af
head(1) som rent faktisk aktivt notificere producenterne af inddata om
at den dør. Det er lettere sagt end gjort, der er ikke umidelbart
noget systemkald der fortæller os hvilke PID'er der kan skrive til
vores STDIN.
http://gist.github.com/176170 implementere dette, men er væmmeligt
uportabelt. Med det script kan man løse problemet med
$ find / | headshot -n 1
Og være sikker på at find bliver dræbt umidelbart efter første match,
kun afhængig af hvad det tager signalet at komme fra den ene process
til den anden.
//Makholm
References