Según el Manual de Administración de la Unix y Linux y man
, logrotate tiene opciones para daily
, weekly
y monthly
, pero hay una manera de añadir una hourly
opción?
Esta publicación de blog menciona que puede establecer size 1
y eliminar la opción de tiempo (por ejemplo:) daily
y luego llamar manualmente logrotate
con cron
- Supongo que algo así como
logrotate -f /etc/logrotate.d/my-hourly-file
¿Pero hay una solución más elegante para rotar los registros por hora?
Respuestas:
Dependiendo de su sistema operativo. Algunas (¿todas?) Las distribuciones de Linux tienen un directorio
/etc/cron.hourly
donde puede colocar trabajos cron para que se ejecuten cada hora.Otros tienen un directorio
/etc/cron.d/
. Allí puede colocar trabajos cron que se ejecutarán como cualquier usuario especial con la configuración cron habitual de una entrada crontab (y debe especificar el nombre de usuario).Si utiliza cualquiera de estos en lugar del script de rotación de registro estándar
/etc/cron.daily/
, debe copiar ese script allí ycp /dev/null
en la posición original. De lo contrario, se reactivará mediante una actualización de parche logrotate.Para una correcta rotación por hora, también tenga cuidado de que la
dateext
directiva no esté establecida. Si es así, de manera predeterminada, el primer archivo girado obtendrá la extensión de la fecha actual como AAAAMMDD. Luego, la segunda vez que logrotate se active dentro del mismo día, simplemente omite la rotación incluso si elsize
umbral ha excedido.La razón es que el nuevo nombre del archivo a rotar ya existe y logrotate no agrega el contenido al archivo antiguo existente. Por ejemplo, en RHEL y CentOS, la
dateext
directiva se proporciona por defecto en/etc/logrotate.conf
. Después de eliminar o comentar esa línea, los archivos rotados simplemente obtendrán un número en ejecución como extensión hasta alcanzar elrotate
valor. De esta manera, es posible realizar múltiples rotaciones al día.fuente
Solo para agregar a la respuesta Nils, si cambia la ubicación del
logrotate
script en un cuadro de Debian o Ubuntu, probablemente sea más seguro usarlo endpkg-divert
lugar de simplemente copiar el archivo y copiarlo/dev/null
a la posición original, por ejemplo:fuente
Otra opción sería agregar el comando logrotate en la lista crontab. Luego se ejecutará por cada hora.
agregue la línea de abajo en la lista de crontab
fuente