¿Cómo borrar el contenido de un archivo error.log pero mantener el archivo intacto?

25

Quiero borrar el contenido del archivo error.log (archivo de registro de errores nginx), pero en realidad no quiero eliminar el archivo.

¿es posible?

ejecutando ubuntu

usuario27449
fuente

Respuestas:

68

Puedes usar esto:

>error.log

(escrito así, una redirección de salida vacía)

o

truncate -s0 error.log
Pausado hasta nuevo aviso.
fuente
@Ignacio: Si el archivo ya existe, cualquiera lo truncará. Si el archivo no existe, cualquiera lo creará.
Pausado hasta nuevo aviso.
Tienes razón, mi mal.
Ignacio Vazquez-Abrams
La última opción funcionó para mí, por alguna razón sudo> error.log no funcionó para mí (ubuntu 12.04)
davidkonrad
55
@davidkonrad: ya deberías ser root para que la redirección funcione, ya que se realiza antes de que sudosurta efecto. O puede hacerlosudo bash -c '>error.log'
pausado hasta nuevo aviso.
1
@ divHelper11: En mi respuesta, digo que es una "redirección de salida vacía". Eso significa que no se está enviando "nada" al archivo nombrado y que sobrescribe cualquier contenido existente. Es similar echo "some words" > output.txtpero no pasa nada.
Pausado hasta nuevo aviso.
1

Confundirás al demonio. Borre el archivo y luego envíelo SIGHUPa nginx.

Ignacio Vazquez-Abrams
fuente
SIGHUP? ¿No puedo cerrar nginx, purgar el archivo y luego comenzar? Quiero saber cómo borrar el archivo por el bien del conocimiento también.
user27449
Si quisieras, claro. Pero eso interrumpiría el servicio.
Ignacio Vazquez-Abrams
Creo que tanto la redirección nula como la truncateatómica son atómicas, por lo tanto, mientras no se realice ninguna búsqueda (especialmente si la única operación que está ocurriendo es agregar), no debería ser perjudicial.
Pausado hasta nuevo aviso.