Estoy buscando una herramienta o secuencia de comandos cuyo registro rota una carpeta o archivos de registro individuales, pero deja algunas líneas en los registros, por ejemplo, corta todas las líneas que tienen más de 2 días y las escribe en otro archivo.
¿Existen scripts, herramientas o demonios que puedan hacer esto? (Estoy trabajando con raspian)
Creo que logrotate
puedo hacer esto con las directivas copy
y postrotate
. Nunca he hecho esto yo mismo. Tal vez aquí está el comienzo de una logrotate.conf
estrofa:
/var/log/mylog {
rotate 5
weekly
copy
postrotate
today=`date +"%b %e"
yesterday=`date +"%b %e" -d "-1 days"
tempfile=`mktemp`
grep "$today\|$yesterday" /var/log/mylog > $tempfile
mv $tempfile /var/log/mylog
endscript
}
Esto no va a ser ideal debido a las condiciones de carrera, creo. sed
podría ser una mejor opción. Tenga en cuenta que el registro anterior tendrá entradas de fecha de hoy y de ayer, por lo que habrá duplicados. Probablemente podría eliminarlos con algunas secuencias de comandos adicionales. Además, probablemente sería mejor (y puede ser necesario) colocar las líneas de la postrotate
estrofa en su propio script de shell.
Esto supone que sus archivos de registro usan el estándar común de especificar fechas de registro con meses y días como "29 de marzo".
izzy
grep
para la fecha (grep -n "2016-03-28" <file> | awk -F ':' '{print $1}' | head -n 1
haría eso).