
Ok, entonces estoy intentando vaciar un archivo. Es un archivo de registro de texto, que se escribe continuamente. Mi ls -lh dice que son 3GB
Corro
> file.log
Mi ls -lh dice que todavía son 3GB
Sin embargo, el tamaño de la carpeta que contiene este archivo es 3 GB menor. Por extraño que parezca, contar las líneas dice que no está vacío y no puedo abrirlo con vim (demasiado grande).
No tengo acceso de administrador, pero soy el propietario del archivo.
Intenté crear un archivo nuevo con solo la primera línea para ver qué está pasando.
head -1 file.log > first_line.txt
Y el first_line.txt es de 3 GB. De hecho, este es un comportamiento extraño.
Pregunta 1: ¿Por qué mi primer comando no vacía el archivo?
Pregunta 2: ¿Cómo puedo vaciar el archivo sin eliminarlo?
Gracias,
EDITAR después de los comentarios: el archivo está siendo abierto y escrito por otros procesos, continuamente.
Lamentablemente no puedo interferir con esos procesos, por lo que no puedo cerrarlos ni reiniciarlos temporalmente.
Respuesta1
su archivo está retenido por un proceso, no puede eliminarlo.
utilizar lsof file.log
para saber qué proceso le está escribiendo.
entonces
mv file.log old.file.log
reiniciar el proceso. (Esto depende del proceso).
A continuación, podrás eliminar old.file.log
.
Si su identificación de archivo aparece en, /etc/logrotate.d/*
puede emitir un comando logrotate.
Respuesta2
Para (casi) vaciar el archivo, use el comando
echo "" > file.log
O, si su sistema operativo lo tiene,
truncate file.log --size 0
Lo truncará a 0 bytes.
Si el archivo no tiene cambios de línea, es posible que el archivo completo tenga 1 línea, lo que explica un archivo de 3 gigas.
Puede tomar una muestra del archivo usando el comando como
dd if=file.log of=firstpart.txt count=1 bs=200
Que ocupará los primeros 200 bytes del archivo. (Si necesita más, aumente el parámetro "bs" hasta 4096, si necesita más, use el parámetro de conteo, es decir, para obtener 8192 bloques, conteo=2 bs=4096)
El consejo de @Archemar es bueno, pero no estoy seguro de que responda a tus preguntas.