Argument list too long

Posted on the September 22nd, 2007 under allgemein by matthias

Der ein oder andere Linuxuser kennt folgende Fehlermeldung vielleicht:

[sourcecode language="css"]Argument list too long.[/sourcecode]

Ziemlich nervend wenn man beispielsweise viele Dateien in einem Durchgang löschen will. Die Limitierung gibt der Kernel vor, in dem ein festes Limit für die Argumente eines neues Prozesses definiert ist. Für Interessierte lässt sich das Limit in der Variable ARG_MAX in der Datei limits.h des Kernel Source-Codes finden:

[sourcecode language="css"]grep ARG_MAX /usr/include/linux/limits.h
#define ARG_MAX 131072 /* # bytes of args + environ for exec() */[/sourcecode]
oder mit getconf ermitteln:
[sourcecode language="css"]getconf ARG_MAX[/sourcecode]

Um trotzdem seine Dateien löschen zu können oder andere Operationen auf viele Objekte anzuwenden, bieten sich u.a. folgende Möglichkeiten an. Zum einen lässt sich dies mit find realisieren:

[sourcecode language="css"]find . -name "*.foo" -exec rm {} ;[/sourcecode]
Eine andere Möglichkeit nutzt eine simple for-Schleife:
[sourcecode language="css"]for i in *.foo; do rm "$i"; done[/sourcecode]
Die effizienteste Methode (Dank für den Hinweis an Jan-Piet) arbeitet mit xargs:
[sourcecode language="css"]ls | xargs rm[/sourcecode]
Links:
ARG_MAX, maximum length of arguments for a new process

|

8 Responses to 'Argument list too long'

  1. 22. September 2007 at 10:49
    JP Mens
  2. 22. September 2007 at 11:07
    matthias
  3. 22. September 2007 at 13:28
    Mario
  4. 22. September 2007 at 13:51
    matthias
  5. 22. September 2007 at 13:57
    JP Mens
  6. 22. September 2007 at 14:17
    matthias
  7. 15. March 2008 at 18:09
    Der Adminblogger
  8. 16. March 2008 at 08:03
    matthias

Leave a Reply




XHTML::
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>