¿Es posible llegar logrotate
a considerar los archivos de registro en un directorio y todos sus subdirectorios? (es decir, sin enumerar explícitamente los subdirectorios).
62
¿Qué tan profundo van tus subdirectorios?
/var/log/basedir/*.log /var/log/basedir/*/*.log {
daily
rotate 5
}
Rotará todos los archivos .log en basedir / así como todos los archivos .log en cualquier hijo directo de basedir. Si también necesita ir 1 nivel más profundo, simplemente agregue otro /var/log/basedir/*/*/*.log
hasta que haya cubierto cada nivel.
Esto se puede probar mediante el uso de un archivo de configuración de logrotate separado que contiene una restricción que no se cumplirá (un tamaño muy alto) y luego ejecutar el registro rotar usted mismo en modo detallado
logrotate -d testconfig.conf
el distintivo -d enumerará cada archivo de registro que está considerando rotar.
-d
pone logrotate en modo de ejecución en seco (es decir, en realidad no cambia nada) en realidad.-f
opción le dice a logrotate que "ejecute forzada". una palabra simple al final del comando es un archivo de configuración para usar en lugar del predeterminado. entonceslogrotate -f /some/config
significa ejecutar con ese archivo de configuración, y siempre ejecutar incluso si el archivo de configuración dice que aún no es hora de ejecutar. Para mis ojos inexpertos, y para mi predecesor que hizo un trabajo cron con eso, parecía que-f
solo estaba especificando el archivo de configuración. Bastante confuso.En mi caso, la profundidad de los subdirectorios puede cambiar sin previo aviso, por lo que configuré un script bash para encontrar todos los subdirectorios y crear una entrada de configuración para cada directorio.
También es importante para mí mantener la estructura de subdirectorios después de la rotación, que los comodines (es decir, la respuesta de @ DanR) no parecían hacer. Si está haciendo rotaciones de registro diarias, podría colocar este script en un trabajo cron diario.
Como sugirió @DanR, pruebe con
logrotate -d
fuente
Es un hilo viejo, pero puedes hacer lo siguiente:
Estas dos estrellas coincidirán con cero o más directorios. Sin embargo, debe tener cuidado de cómo define los archivos de registro para que se roten, porque puede rotar los archivos que ya se han rotado. Citaré el manual de logrotate aquí.
fuente
globstar
antes de ejecutar logrotate. Esto lo habilitará para bashshopt -s globstar
.