Argument list too long

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

Der ein oder andere Linuxuser kennt folgende Fehlermeldung vielleicht:

Argument list too long.

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:

grep ARG_MAX /usr/include/linux/limits.h
#define ARG_MAX   131072  /* # bytes of args + environ for exec() */

oder mit getconf ermitteln:

getconf ARG_MAX

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:

find . -name "*.foo" -exec rm {} ;

Eine andere Möglichkeit nutzt eine simple for-Schleife:

for i in *.foo; do rm "$i"; done

Die effizienteste Methode (Dank für den Hinweis an Jan-Piet) arbeitet mit xargs:

ls | xargs rm

Links:
ARG_MAX, maximum length of arguments for a new process

Related posts:

Twitter Post | Print Post

8 Responses to 'Argument list too long'

  1. Gravatar 22. September 2007 at 10:49
    JP Mens
  2. Gravatar 22. September 2007 at 11:07
    matthias
  3. Gravatar 22. September 2007 at 13:28
    Mario
  4. Gravatar 22. September 2007 at 13:51
    matthias
  5. Gravatar 22. September 2007 at 13:57
    JP Mens
  6. Gravatar 22. September 2007 at 14:17
    matthias
  7. Gravatar 15. March 2008 at 18:09
    Der Adminblogger
  8. Gravatar 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>