KSH – Script para purgado de logs o archivos temporales.-

Script para purgado de logs o archivos temporales. El uso excesivo de logs nos lleva a la necesidad de la existencia de una rotación o depuración de los mismos; para esa ocasión, tan solo con un find bien robusto podemos hacer esta purga.
Veamos el ejemplo y analicemos brevemente el código:
MantenimientoLogs.sh:

#!/bin/ksh
Log()
{
date “+%Y/%m/%d %H:%M:%S, $0, $1”
}
echo
Log “*** $0 Init ***”
cfgFile=$1
if test -z “$”; then
Log “No se especifico archivo de configuracion”
Log “Termina!”
exit 1
fi
if test ! -f “$cfgFile”; then
Log “No se encuentra el archivo de configuracion: [$cfgFile]”
Log “Termina!”
exit 3
fi
. $cfgFile # include
Log “Purgo logs ($datePurge dias)”
find $pathLogs \( -name “*.*~” -o -name “*.log” \) -ctime +$datePurge -exec “rm -v {}”
Log “Terminamos!”

MantenimientoLogs.cfg

# path del directorio de logs
pathLogs=/var/log/myapp/

typeset -i datePurge
# tiempo que mantengo los logs
datePurge=30*3 #tres meses

El primero de los archivos es el que hace el trabajo, el segundo es solamente de configuración. El primero recibe como argumento el segundo. El único motivo de este desacople es que cuando haya algo de configuración que modificar, se haga en el archivo cfg y no en el script de mantenimiento que es el que tiene la lógica.

En MantenimientoLogs.cfg solo configuro el directorio que quiero purgar, y la cantidad de días que pretendo mantener los logs.

MantenimientoLogs.sh tiene la “lógica”, entre comillas ya que no hay mucho que decir de la misma sino más bien del find. En este script lo primero que vemos es una función Log, que hace de echo pero que agrega la fecha a cada línea. Luego se hace una especie de “include” del archivo de configuración (recibido como parámetro), previo chequeo de la existencia del argumento y la existencia del archivo. Y luego viene todo el trabajo, que lo hace el find.

El find en el caso del script busca todos los archivos .sql o .*~ cuya fecha de modificación sea más de N días (donde N es $datePurge y $datePurge lo habiamos configurado en el cfg). Y finalizando esta línea, a los resultados del find les ejecuta la acción “rm -v“.

Este script fue copiado desde la siguiente URL : Script para purgado de logs o archivos temporales

Esta entrada fue publicada en Unix - Linux. Guarda el enlace permanente.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.