lunes, 11 de julio de 2016

Limpiar archivos de log en Linux

Una tarea común de mantenimiento en los sistemas operativos Linux (y que es extensivo a la mayoría de los sistemas operativos basados o clones de Unix) es la de limpieza de archivos de logs. Tanto el sistema operativo, como algún motor de base de datos y unos cuantos procesos propios pueden generar grandes cantidades de archivos de logs. Al largo plazo, es menester quitar estos archivos pues nos ocupan espacio, ya son obsoletos y nos suelen complicar las búsqueda.

Por tal motivo, basado en la publicación original “Listar/Eliminar archivos por fechas en Linux” veamos como podemos desde el shell hacer búsquedas de archivos antiguos y eliminarlos. Está de más decir, que los comandos que a continuación se mencionan son candidatos a formar parte de un shell script y que probablemente sea ejecutado por el cron.
Bien, basta de palabras y veamos algunos ejemplos prácticos:

Buscar archivos actualizados hasta tres días atrás en el directorio actual:
cd /var/log
find -name \*.log -mtime +3

Buscar archivos actualizados hasta tres días atrás en el directorio actual y eliminarlos:
find . -name \*.log -mtime +3 -exec rm {} \;

Buscar los archivos actualizados hasta un día atrás y mostrar su ruta completa:
find /var/log/[a-z]* \*.sql -mtime +1

Lo mismo que en el segundo caso, si queremos eliminar los archivos devueltos por el comando anterior:
find /var/log/[a-z]* \*.sql -mtime +1 -exec rm {} \;

Además, podemos afinar algo más la búsqueda utilizando el argumento -mmin en vez de -mtime:
  • -mtime n, busca archivos modificados n*24 horas atrás (n días atrás)
  • -mmin n, para archivos modificado n minutos atrás

No hay comentarios:

Publicar un comentario