logrotate comprimir los archivos después de la postrotate script

Tengo una aplicación que genera una muy pesada gran archivo de registro de todos los días (~800 MB de un día), por lo que es necesario comprimir, pero desde la compresión toma tiempo, quiero que logrotate comprimir el archivo después de la recarga o el envío de señal HUP a la aplicación.

/var/log/myapp.log {
    rotate 7
    size 500M
    compress
    weekly
    postrotate
        /bin/kill -HUP `cat /var/run/myapp.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

Es ya el caso de que la compresión se lleva a cabo después de la postrotate (lo que iría en contra-intuitivo)?
Si no ¿alguien Puede decirme si es posible hacer eso sin una secuencia de comandos (una opción o algún truco)?

Gracias
Thomas

OriginalEl autor Thomas | 2011-09-01

4 Kommentare

  1. 14

    La postrotate script se ejecuta antes de la compresión se produce: a partir de la página man de logrotate

    La siguiente sección de los archivos de configuración define cómo manejar el archivo de registro
    /var/log/messages. El registro va a ir a través de cinco semanal rotaciones antes de
    de ser retirado. Después de que el archivo de registro ha sido rotada (pero antes de que el viejo
    la versión de que el registro ha sido comprimido), el comando /sbin/killall -HUP
    syslogd será ejecutado.

    En cualquier caso, usted puede utilizar el delaycompress posibilidad de aplazar la compresión a la siguiente rotación.

    Gracias, debería haber leído más detenidamente la página man … Aunque esta información también debe estar bajo la opción comprimir explicación.
    Tenga en cuenta que sharedscripts hace que el postrotate script se ejecute después de la compresión, si usted está usando que
    Nota para todos los lectores, el comentario de arriba parece falso basado en la respuesta de abajo por @jw-collar-de-tres-chars, por favor, consulte también la última.
    Las personas interesadas en el orden en que se hacen las cosas por logrotate encontrará logrotate -d útil – le dice exactamente lo que está sucediendo. Usted probablemente quiera usar -f así.
    Entonces, ¿qué hace el manual significa entonces? Para mí, el «después de los registros antiguos se han comprimido» parte no parece algo confuso, pero se equivoca.

    OriginalEl autor Hasturkun

  2. 39

    Agregar esta info aquí en el caso de cualquier otra persona que viene a través de este hilo cuando en realidad la búsqueda para querer una forma de ejecutar una secuencia de comandos en un archivo una vez que la compresión se ha completado.

    Como se sugirió anteriormente utilizando postrotate/endscript no es bueno para eso.

    Lugar puede utilizar lastaction/endscript, que hace el trabajo perfectamente.

    Tú eres el hombre. Me salvó, al menos, 30 minutos de búsqueda en google/lectura.

    OriginalEl autor Mark

  3. 21

    La postrotate script siempre ejecuta antes de compresión, incluso cuando sharedscripts es en efecto. Hasturkun adicional de la respuesta a la primera respuesta es, por tanto, incorrecta. Cuando sharedscripts es en efecto el único compresión se realiza antes de la postrotate es para viejos sin comprimir los registros de la izquierda se extiende alrededor debido a un delaycompress. Para los registros actuales, la compresión es siempre realiza después de ejecución de la postrotate script.

    Acabo de descubrir por mí mismo. De acuerdo en que @Hasturkun debe revisar o eliminar su comentario.
    Había sido un comentario, yo probablemente habría respondido en menos de ocho meses

    OriginalEl autor JW-padded-to-three-chars

  4. 2

    @Hasturkun – Uno no puede agregar un comentario a menos que su reputación está en primera por encima de 50.

    Para asegurarse de lo que logrotate va a hacer, ya sea

    1. probar su configuración, -d: debug que las pruebas pero no
      nada, y -f: la fuerza que se ejecute
    2. o puede ejecutar con logrotate
      la -v verbose bandera

    Con una configuración que utiliza un sharedscript para postrotate

    $ logrotate -d -f <logrotate.conf file>

    Muestra los pasos siguientes:

    rotating pattern: /tmp/log/messages /tmp/log/maillog /tmp/log/cron
    ...
    renaming /tmp/log/messages to /tmp/log/messages.1
    renaming /tmp/log/maillog to /tmp/log/maillog.1
    renaming /tmp/log/cron to /tmp/log/cron.1
    running postrotate script
    <kill-hup-script executed here>
    compressing log with: /bin/gzip
    compressing log with: /bin/gzip
    compressing log with: /bin/gzip
    Suponiendo que te refieres a mi (retraído) comentario, si mal no recuerdo (Que ha sido un tiempo desde entonces) he comprobado el logrotate de origen cuando el error fue criado. De hecho fue equivocada, el comportamiento no se ve afectado. En cualquier caso, las pruebas de configuración es probablemente una buena idea.

    OriginalEl autor Russell E Glaue

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea