[linux] Re: xargs limiet?

Paul Slootman paul+nospam op wurtel.net
Vr mei 13 15:01:31 CEST 2005


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.

> 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".


Paul Slootman



More information about the Linux mailing list