¿Por qué Apache se niega a escribir en los archivos de registro (los ErrorLog
/ CustomLog
unos) después de haber eliminado manualmente su contenido?
No volverá a escribir en esos archivos de registro hasta que reinicie Apache.
¿Por qué es este el caso? ¿Cómo puedo purgar de forma segura un archivo de registro sin tener que reiniciar Apache?
Tengo Apache 2.2.14 en Ubuntu 10.04.
apache-2.2
ubuntu
Falla atómica
fuente
fuente
logrotate
que envía una señal de recarga / reinicio adecuada a Apache (consulte la respuesta de Pedro a continuación). Nickgrim cubrió el "porqué" de los registros de detener - Apache sigue escribiendo a la edad i-nodo (que ya no está conectado al sistema de archivos en cualquier lugar se puede llegar a ella)Respuestas:
Acabo de hacer una breve prueba:
Tenga en cuenta que
vimtest
tiene un número de inodo diferente después de editarlo y, por lo tanto, en realidad es un archivo diferente (aunque con el mismo nombre que el archivo anterior).Por lo tanto, cuando edita el archivo con vim, elimina el archivo anterior y crea uno nuevo con el mismo nombre. El problema que está viendo es causado por Apache que todavía escribe en el archivo antiguo (eliminado) (puede verificar esto con
lsof
).Si realmente quiere truncar un archivo de registro, considere
truncate -s 0 /path/to/file.log
(que parece truncarse en el lugar)fuente
Recomendaría forzar la rotación de los archivos de registro de Apache2 con:
Si observa
/etc/logrotate.d/apache2
, verá que laApache2
configuración debe volver a cargarse después de eliminar su archivo de registro con:En Ubuntu puedes hacer alternativamente:
fuente