Rotar y abrir archivos

21

¿Cómo maneja logrotate los archivos abiertos? ¿Puede logrotate rotar archivos que un proceso ha abierto?

Kyle Brandt
fuente

Respuestas:

7

Para aquellas aplicaciones que no aceptan las señales de logrotate como Rory describió, utilizo un par de métodos.

  1. Use la opción copytruncate
  2. Agregue una declaración posterior a la rotación para reiniciar el servicio

La decisión de cuál usar depende tanto del tamaño de los archivos de registro como de la necesidad de registros ininterrumpidos. Será un análisis de riesgos por su parte. Sin embargo, para dar un ejemplo, uso un reinicio posterior a la rotación en ciertos registros donde realmente debería estar usando un copytruncate. Sin embargo, los archivos son a menudo varios conciertos y la copia puede tomar el tiempo suficiente como para perder uno o dos segundos cada noche.

Scott Pack
fuente
Perdón por empezar demasiado tarde, pero supongo que podría ahorrar algo de tiempo a otros que buscan este problema. Eche un vistazo a otro enfoque para resolver esto. unix.stackexchange.com/a/122942/189725
Victor
17

Parece que podría querer lo siguiente, pero todavía estoy interesado en la experiencia de cualquiera sobre el tema:

copytruncate
              Truncate  the original log file to zero size in place after cre‐
              ating a copy, instead of moving the old log file and  optionally
              creating  a new one. 
Kyle Brandt
fuente
1
Es como hacer "cp something.log something.log.1;:> something.log" para que el archivo se vacíe pero el identificador no se rompa. El problema es el tiempo entre los 2 comandos, podría perder alguna línea de registros
radio
5

logrotate enviará la señal correcta al proceso para indicarle que vuelva a abrir los archivos de registro. Funciona de fábrica para cosas como apache o mysql.

Puede ver esto en el script postrotate para apache. Si tienes tu propio demonio y quieres que logrotate funcione con él, asegúrate de que escuche una señal determinada y vuelva a abrir los archivos de registro.

Si no puede cambiar el programa, puede ver si el demonio tiene una forma de vaciar automáticamente los registros. O agregue una rotación previa que detenga el servidor, y una rotación posterior que lo inicie nuevamente.

Rory
fuente
Bien, no creo que haga que los desarrolladores hagan eso, pero es bueno saber cuál es el estándar :-)
Kyle Brandt