Argument list too long

Fórumok

Sziasztok!

Ismert, hogy ha egy bizonyos limitet eler egy parancs hossza (tipikusan sok file-ra lefuttatott parancsok ilyenek), akkor a fenti hibauzenetet adja a shell.

A megoldas altalaban az xargs, find, es hasonlo parancsok hasznalata, ami scriptben is sokkal stabilabb, mint egy erre fel nem keszitett modszer lenne. Ezeket ismerem, es szoktam is hasznalni.

Viszont interaktiv shell eseten van-e lehetoseg a hossz novelesere? Amikor ezt a limitet kitalaltak, meg nem 64 bites gepek voltak, nem ekkora winyoval (ha volt egyaltalan) es RAMmal. A mostani gepemben valoszinuleg a cache nagyobb, mint az akkori memoria, de a memoriaba is beleferne az akkori hattertar mindenestul. Nem terhelne meg meg az sem, ha parszaz MB meretu lehetne egy parancs hossza, meg az is elferne.
Kenyelmi okokbol fel szeretnem ezt emelni. A kerdesem, hogy ezt hol tehetem meg? Mi korlatozza? Kernelbeli const, ulimit, bash configfile, vagy ezek kozul tobb is?

Hozzászólások

régebben (ubuntu 6.06) még én is találkoztam ezzel, viszont kb másfél éve nincs ez a probléma - ubuntu alatt legalábbis. Úgy tudom hogy nincs limit.

Tudtommal exec esetén jön elő, tehát ha shell belső paranccsal próbálkozol, akkor nem igazán lehet előhalászni. Klasszikus példa erre:


echo /* /*/* /*/*/* /*/*/*/* # ez belső parancs, nem kell exec
vs
/bin/echo /* /*/* /*/*/* /*/*/*/* # ez viszont külső, és kell exec

És hogy próbáljak a nyitó kérdésre is válaszolni - nyilván kernelbeli paraméter, és fentiek alapján valahol az exec megvalósítás környékén keresgélj.

A kovetkezo kimenetek kerem szepen:


bash --version
uname -a
ulimit -a

Valoszinu 2.6.23 -nal ujabb kerneled van, es valoszinu, ha a stack limitet megnoveled, akkor neked jobb lesz.

ulimit -S -s $(( $(ulimit -S -s) * 2 ))