guide forzar delaycompress email logrotate

email - forzar - logrotate ubuntu



¿Cómo puedo reparar “/etc/cron.daily/logrotate: gzip: stdin: el tamaño del archivo cambió al comprimir”? (2)

En los últimos días recibo un correo diario de la tarea logrotate de Cron:

/etc/cron.daily/logrotate:

gzip: stdin: el tamaño del archivo cambió al comprimir

¿Cómo puedo arreglarlo?

Gracias, Gian Marco.


Aquí hay una entrada de blog en francés que da una solución.

En inglés, puedes leer este informe de error .

Resumir:

  1. Primero debe agregar la opción --verbose en el script /etc/cron.daily/logrotate para tener más información la próxima vez que se ejecute para identificar qué registro de rotación causa el problema.

    #!/bin/sh test -x /usr/sbin/logrotate || exit 0 /usr/sbin/logrotate --verbose /etc/logrotate.conf`

  2. A continuación, debe agregar la opción delaycompress en la configuración de logrotate.


upstart cerrará (y volverá a abrir) su archivo de registro cuando note que el archivo se ha eliminado . Sin embargo, si observa lo que hace gzip , verá que no elimina el archivo hasta que se escribe uno en el archivo de salida. Eso significa que siempre hay una condición de carrera en la que las líneas de registro podrían perderse para los registros de líneas que se escriben en gzipping .

Puede deshabilitar la advertencia usando gzip --quiet , pero en realidad eso no oculta el hecho de que todavía puede perder líneas de registro.

Esto significa que delaycompress no es una solución genérica para esto. Es una solución específica a un problema específico.

La solución real para esto es probablemente una combinación de delaycompress y poder enviar una señal al proceso. Hará que la condición de carrera desaparezca en la práctica (a menos que gire varias veces por segundo :)).