[linux] Re: xargs limiet?
J.
mailing-lists op xs4all.nl
Vr mei 13 15:45:23 CEST 2005
On Fri, 13 May 2005, Paul Slootman wrote:
> On Fri 13 May 2005, J. wrote:
> >
> > Nee, daarvoor is xargs net gemaakt. Xargs voert voor iedere regel die
> > binnen komt het commando uit. Je kan xargs wel proberen af te grendelen
>
> In principe zal xargs juist input verzamelen tot een bepaalde
> hoeveelheid en dan het commando aanroepen met al die input er achter.
> Dus 'xargs do-iets' met input:
>
> aa
> bb
> cc
> dd
>
> zal uitvoeren: 'do-iets aa bb cc dd'
>
> Xargs was juist uitgevonden om (meestal samen met find) niet voor elke
> file / argument een nieuw process te hoeven te starten. Da's
> tegenwoordig niet zo spannend meer, maar toen het starten van een nieuw
> process aardig wat tijd kostte (denk aan tienden van secondes...) was
> het heel zinvol om i.p.v. dit:
>
> find -type f -mtime +100 -exec rm '{}' ';'
>
> dit te doen:
>
> find -type f -mtime +100 | xargs rm
>
> (nog afgezien van het feit dat het korter typen is :-)
> Dat kon echt minuten schelen.
>
> > met bijv:
> >
> > ~: xargs -n 64
>
> Hiermee zal je dus meestal meer processen veroorzaken. Echter, als het
> uit te voeren commando niet goed overweg kan met heel veel argumenten,
> dan is het zinvol.
De optie `-n' heeft geen betrekking tot het aantal processen maar tot het
maximum aantal argumenten dat xargs zal pakken.
Uit de manpage:
`Use at most max-args arguments per command line'
Default wordt er maar 1 proces aangemaakt. Tenminste zo begrijp ik het uit
de manpage ? Om meer processen op te starten is de `-P ' optie.
> > Noot: je gebruikers omgeving heeft wel een limiet van het maximum aantal
> > argumenten dat verwerkt kan worden. De hoogte van die limiet moet terug te
> > vinden zijn in de documentatie van de Shell die je gebruikt.
>
> is meer een beperking van je systeem, niet de shell. Het aantal
> argumenten is ook niet beperkt, maar het totaal aantal bytes. Als die
> overschreden wordt, krijg je iets als "argument list too long".
Ik heb het ff nagekeken, en daar heb je gelijk in.
~: getconf ARG_MAX
131072
> Paul Slootman
Thnkx... !
J.
More information about the Linux
mailing list