logrotate por tamaño: ¿necesito cambiar el cron?

10

Mi configuración de logrotate actual se ve así (usando logrotate 3.8.7)

"/var/log/haproxy.log" {
  daily
  size 250M
  rotate 1
  create 644 root root
  missingok
  compress
  notifempty
  copytruncate
}

Se ejecuta con éxito una vez al día, pero cuando el tamaño supera los 250M, no se rota. Por lo tanto, espera hasta el final del día para rotar, independientemente del tamaño.

He leído que existe la opción maxsize, y después de cambiar size 250Ma maxsize 250Mque todavía no funciona.

¿Necesito establecer un cron para ejecutar logrotate de una vez por hora, o logrotate se ejecuta automáticamente porque está escuchando ese tamaño de archivo y tengo algo más mal?

Hommer Smith
fuente

Respuestas:

7

Sí, necesitas correr logrotatemás de una vez al día para lograrlo. Esto se responde en el párrafo de segundos de la página de manual logrotate(8) :

Normalmente, logrotatese ejecuta como un trabajo cron diario. No modificará un registro varias veces en un día a menos que el criterio para ese registro se base en el tamaño del registro y logrotatese ejecute varias veces al día, o a menos que se use la opción -fo --force.

Si desea ejecutar logrotatecada hora en lugar de diariamente, puede moverlo:

mv /etc/cron.daily/logrotate /etc/cron.hourly

Desde 3.8.1 ha habido maxsize. La diferencia entre sizey maxsizese describe aquí:

maxsize Talla

Archivos de registro se cambian cuando crecen más grande que el tamaño de bytes, incluso antes del intervalo de tiempo especificado, además, ( daily, weekly, monthly, o yearly). La sizeopción relacionada es similar, excepto que es mutuamente exclusiva con las opciones de intervalo de tiempo y hace que los archivos de registro se roten sin tener en cuenta el último tiempo de rotación. Cuando maxsizese usa, se consideran tanto el tamaño como la marca de tiempo de un archivo de registro.

Esto haría que ambos sean adecuados para su uso: sizesin ningún intervalo y maxsizesi también se necesita un intervalo. Sin embargo, esto no cambia el hecho de que, de forma predeterminada, logrotatesolo se ejecuta a diario. Ese intervalo es adecuado para la mayoría, ya que en la mayoría de los casos el registro tarda más de un día en crecer 250M.

Esa Jokinen
fuente
1
Para su información, hay una directiva de tamaño máximo, a partir de 8.1: hpux.connect.org.uk/hpux/Sysadmin/logrotate-3.8.7/…
Hommer Smith
¡Gracias por notar que estaba leyendo una versión antigua del manual, @HommerSmith! Corregí mi respuesta en consecuencia.
Esa Jokinen