¿Alguien ha tenido algún problema con logrotate antes que haga que un archivo de registro se gire y luego vuelva al mismo tamaño que originalmente? Aquí están mis hallazgos:
Logrotate Script:
/var/log/mylogfile.log { rotar 7 diario comprimir olddir / log_archives missingok notifempty copytruncate }
Salida detallada de Logrotate:
copiando /var/log/mylogfile.log a /log_archives/mylogfile.log.1 truncando /var/log/mylogfile.log registro de compresión con: / bin / gzip eliminar el registro antiguo /log_archives/mylogfile.log.8.gz
El archivo de registro después de truncar ocurre
[root @ server ~] # ls -lh /var/log/mylogfile.log -rw-rw-r-- 1 parte1 parte1 0 11 de enero 17:32 /var/log/mylogfile.log
Literalmente segundos después:
[root @ server ~] # ls -lh /var/log/mylogfile.log -rw-rw-r-- 1 parte1 parte1 3.5G 11 de enero 17:32 /var/log/mylogfile.log
Versión RHEL:
[root @ server ~] # cat / etc / redhat-release Red Hat Enterprise Linux ES versión 4 (Nahant Update 4)
Versión Logrotate:
[raíz @ DAA21529WWW370 ~] # rpm -qa | grep logrotate logrotate-3.7.1-10.RHEL4
Pocas notas:
- El servicio no se puede reiniciar sobre la marcha, por eso estoy usando copytruncate
- Los registros rotan todas las noches, de acuerdo con el
olddir
directorio que contiene archivos de registro de cada noche.
Estoy extremadamente seguro de que Kjetil lo ha golpeado. Drew, puede que aún no estés convencido por su explicación, pero te insto a que leas detenidamente lo que ha dicho.
Si lo acepta, la solución es detener y reiniciar su aplicación cuando se rotan los registros, o usar una herramienta como "rotatelogs" de apache, donde alimenta la salida del registro a la herramienta a través de una tubería, y la herramienta se encarga de girando el archivo de registro de vez en cuando. Por ejemplo, una de mis instancias de apache se registra con
lo que causa muchos archivos de registro con nombres como
aparecer sin reiniciar apache; Luego puedo comprimirlos manualmente después del hecho. Tenga en cuenta cómo se realiza la rotación cada semana, que es cada 604800 segundos, siendo ese el argumento al que se pasó
rotatelogs
.Si no puede detener y reiniciar la aplicación, y no puede iniciar sesión a través de una tubería, entonces creo que tiene un problema real. Quizás otros tengan sugerencias.
fuente
sería realmente genial si pudieras enviar todo el logrotate.
¿Por qué intentar usar kill -HUP? Método (recarga clásica no reiniciando ).
Además ... verifique
lsof
quién está accediendo al archivo.fuente
kill -HUP
ya que esta aplicación no se puede tocar de ninguna manera: es una aplicación confidencial que no es de mi propiedad (ni siquiera la administro, solo administro el lado del sistema operativo), por lo que necesito poder hacer las logrotations esto camino./etc/cron.daily
se inició la rotación programada . Pregunta para todos: ¿Hay algo que el script logrotate haga de manera diferente que ejecutar logrotate manualmente? Mi script de logrotate literalmente se ve así/usr/sbin/logrotate /etc/logrotate.conf
. Esto es bastante desconcertante.Simplemente use ">>", que significa agregar en lugar de ">", que significa crear a partir de sus scripts que escriben en este archivo. Tuve exactamente el mismo problema y lo solucioné usando append en mi script.
SomeScript.sh >> output.txt
Espero que sea más claro.
fuente
>
desde un script. Además, esta respuesta es confusa porque hay una gran diferencia entre>
y>(
)
en los scripts. Finalmente, si el código que realiza la escritura se actualiza, sería mucho mejor que simplemente comience a escribir en el nuevo archivo de registro después delogrotate
haber hecho lo suyo.