[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