Posts Tagged ‘linux’

Eliminando muchos archivos en un directorio en Linux

By Luigi Keynes

Necesitaba depurar un directorio donde se cachean archivos de uno de mis sitios. La cantidad de archivos era muy grande, al menos mas de un millón.

Traté de utilizar el comando rm a secas:

# rm /directorio_de_caches/*

Pero me apareció el siguiente mensaje:

bash: /usr/bin/rm: The parameter or environment lists are too long

Este mensaje significa que mensaje anterior indica que el kernel de Linux tiene una cantidad fija de memoria disponible para el ambiente de ejecución del programa y la lista de argumentos, la cual no es suficiente para realizar la operación solicitada. En este caso significa que la lista de los nombres de los archivos a eliminar (no el tamaño de todos los archivos) es mas grande que la memoria buffer disponible del sistema operativo.

Para solucionar esto, una posibilidad es eliminar el directorio completo.

# rm /directorio_de_caches/

Pero en mi caso esto no es viable, ya que este directorio es fundamental para el funcionamiento normal del sitio, y eliminar el directorio y su contenido llevaría algunas horas.

La solución que encontré es eliminar los archivos uno a uno, sería un proceso lento, pero mejor desde el punto de vista de no saturar el servidor o generar caídas en el sitio en cuestión.

Para ello utilizo el siguiente comando:

# for i in ls /directorio_de_caches/*; do rm -v $i -f; done

Y como en mi caso quiero eliminar solo los archivos .jpg, el comando querdaría así:

 #for i in ls /directorio_de_caches/*.jpg; do rm -v $i -f; done

Comparte:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • BarraPunto
  • Bitacoras.com
  • LinkedIn
  • Meneame
  • MySpace
  • Twitter
  • Yahoo! Bookmarks
  • email
  • Live
  • RSS
  • Technorati