MarcosBL

Aprendiz de todo, maestro de nada

Argument list too long – Utilizando rm

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 en “Argument list too long – Utilizando rm

Comments are closed.