¿Cómo maneja logrotate los archivos abiertos? ¿Puede logrotate rotar archivos que un proceso ha abierto?
¿Cómo maneja logrotate los archivos abiertos? ¿Puede logrotate rotar archivos que un proceso ha abierto?
Respuestas:
Para aquellas aplicaciones que no aceptan las señales de logrotate como Rory describió, utilizo un par de métodos.
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.
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.
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.