GNU/Linux >> Tutoriales Linux >  >> Linux

Manera de decirle a Logrotate que ignore los archivos abiertos?

He buscado un poco y no encuentro nada. No quiero logrotate para tocar los archivos que están abiertos actualmente. Estaba pensando en hacer algo con lsof pero no vi una manera de hacer que ninguno de los scripts cancelara una operación. ¿Alguna idea?

Respuesta aceptada:

Si tiene nosharedscripts set (predeterminado) y prerotate el script sale con un error, el archivo de registro afectado no tendrá ninguna otra acción sobre él*.

Entonces, en teoría, podría tener algo como (advertencia, no probado):

/var/log/application.log {
    nosharedscripts
    prerotate
        logfile=$1
        lsof $logfile >/dev/null
        exit $?
    endscript
    ...
}

entonces si lsof no puedo encontrar ningún proceso con $logfile abierto, el prerotate el script saldrá con 1 y logrotate no realizará ninguna acción en ese registro.

*Desde el logrotate(8) página man en linux.die.net:

nosharedscripts
Run prerotate and postrotate scripts for every log file which is rotated
(this is the default, and overrides the sharedscripts option). The absolute
path to the log file is passed as first argument to the script. If the
scripts exit with error, the remaining actions will not be executed for the
affected log only.
...
prerotate/endscript
The lines between prerotate and endscript (both of which must appear on
lines by themselves) are executed (using /bin/sh) before the log file is
rotated and only if the log will actually be rotated. These directives may
only appear inside a log file definition. Normally, the absolute path to
the log file is passed as first argument to the script. If sharedscripts is
specified, whole pattern is passed to the script. See also postrotate. See
sharedscripts and nosharedscripts for error handling.

Este puede ser dependiente de su logrotate versión, pero no puedo encontrar ninguna documentación sobre qué versiones se comportan / no se comportan de esta manera.


Linux
  1. ¿Alguna forma de sincronizar la estructura del directorio cuando los archivos ya están en ambos lados?

  2. ¿Registrar algún comando similar a `time`?

  3. 20 archivos de registro de Linux que se encuentran en el directorio /var/log

  4. ¿La forma más rápida de saber si dos archivos tienen el mismo contenido en Unix/Linux?

  5. ¿Cómo ignorar directorios/archivos en Subversion?

Cómo rotar y comprimir archivos de registro en Linux con Logrotate

Cómo administrar archivos de registro usando Logrotate en Linux

Configurando logrotate en Linux

Cómo instalar Logrotate en Ubuntu 16.04 LTS

¿Cómo puedo saber qué archivos tiene abiertos un proceso?

Logrotate:¿Rotación de archivos que no son de registro?