Argument list too long – Utilizando rm

votar

En uno de los portales en el trabjo, se crea automáticamente una sesión con caducidad larga, muy larga (sobre 10 años) para permitir al usuario mantener sus datos en un formulario que contiene demasiada información para utilizar cookies. Aunque se podria solucionar con base de datos, en su dia se optó por este método, y de vez en cuando se nota lentitud en el servidor debido al ingente número de sesiones creadas en /var/lib/php/sessions , ya que este portal en concreto recibe bastantes visitas.

El caso es que intentando eliminarlas, hoy me he encontrado con un problema:

root@local /var/lib/php/sessions # rm sess_*
/bin/rm: Argument list too long.

Toma del frasco.. asi, sin anestesia. Si probaba a borrar en partes si funcionaba en ocasiones, pero en otras no… Por lo que he leido por ahi parece ser una limitación propia del kernel, no podemos hacer estas operaciones sobre más de 1024 ficheros a la vez, y en mi caso eran sobre 150.000 sesiones, asi que una solución para salir del paso es hacer un find y pasar los resultados como argumento uno a uno (la velocidad es más que aceptable):

find . -name ‘sess_*’ -print0 | xargs -0 rm

Y carpeta vacia…

3 comentarios a esta entrada

  • Gravatar Félix dijo
    el # Martes, 22 de Abril del 2008 a las 11:55

    1

    Y por qué usar el pipe y no el exec de find? :

    find . -name “sess_*” -exec rm ‘{}’ \;

    Un saludo.

  • Gravatar Marcos B.L. dijo
    el # Martes, 22 de Abril del 2008 a las 16:41

    2

    La verdad desnuda: Ni se me ocurrió :D Gracias !

  • Gravatar Marcos B.L. dijo
    el # Jueves, 6 de Noviembre del 2008 a las 15:22

    3

    Más sencillo aún:

    cd /carpeta
    ls|xargs rm

Deja tu opinión

Sólo se permiten las etiquetas XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Post anteriores/siguientes:

Post (quizás) relacionados:

  • Geolocalización inversa en bash

  • [php] #!/bin/bash # geo # Usage: geo latitud longitud # Ejemplo: ./geo.sh 43.021277 -7.554345 lat=$1 long=$2 wget -q "http://maps.google.com/maps/geo?output=csv&oe=utf-8&ll=$lat,$long" -O -| cut -f3- -d, [/php]...
  • 50 sitios con Themes para WordPress

  • Aqui tienes 50 sitios de los que poder descargar themes para tu Wordpress. La mayoria, de gran calidad....
  • Prohibido Prohibir

  • Prohibido enlazar noticias utilizando el titular de la noticia como anchor text... algo tan estúpido a duras penas puede ser creible....
  • Hola Blackbird, adios alert()

  • Blackbird es un sistema de Log Javascript que te permiter agregar items de forma extremadamente sencilla, listarlos y acceder a ellos. El fin de los...
  • Seek Attention, llama la atención sobre un elemento de tu página con jQuery

  • Seek Attention es un plugin que nos permitirá llama la atención sobre un elemento de nuestra página utilizando jQuery. Para ello se vale de ciertos...