Cuando se eliminan archivos grandes en un servidor, los archivos aún pueden ser referenciados por procesos, por lo que el sistema de archivos no tiene más espacio libre.
Intenté usar lsof , pero parece que no enumeró los archivos eliminados. fuser -c
funcionó mejor, pero la lista de procesos es demasiado larga para verificarla para cada proceso, especialmente porque cada proceso es un proceso de Oracle.
bash-3.2# fuser -c /var
/var: 105o 29999o 20444c 3528c 27258o 7715o 3864o 3862o 2494o 18205o 17450co 17445co 14912co 14824co 14818co 14816o 14814o 8532c 8530c 7633com 7118o 6958o 6790c 6784co 6734o 6693o 6689o 6684o 6675o 6635o 6594c 6548o 6547o 6546o 6545o 6544o 6543o 6542o 6541o 6540o 6537o 6535o 6456o 6128co 6113o 335o 245co 229o 161o 8o
bash-3.2# du -hs /proc
139T /proc
A veces sucede que una aplicación o un usuario elimina un archivo, por ejemplo, un archivo de registro, y que este proceso aún no se puede reiniciar.
¿Existen métodos de bienes para reclamar espacio en disco en archivos eliminados sin reiniciar el proceso que tiene una referencia a este archivo eliminado?
cp /dev/null file
cp /dev/null
es un comando nulo ya quecp
no tiene nada que copiar, una simple redirección es estrictamente equivalente:>file
o incluso>file
Respuestas:
Encuentra todos los descriptores de archivos abiertos.
Grep eliminado.
StdError a / dev / null
Salida:
O puedes usar awk
find / proc / * / fd -ls 2> / dev / null | awk '/ deleted / {print $ 11}';
salida awk (probado en bash Ubuntu 12.04):
Encuentra y trunca todos los archivos eliminados (probado en bash Ubuntu 12.04):
(NO HAGA ESTO SI NO SABE LO QUE HACE)
-p pregunta antes de ejecutar truncar
Mejor forma es truncar manualmente
Truncado manual:
o:
o:
Disfrutar;)
fuente
Aquí hay un ejemplo simple con
less
:Supongamos que tenemos un archivo
my10MBfile
:Ahora abro ese archivo con
less
(sí, es un archivo binario ... no importa)Luego elimino ese archivo
Todavía está allí, pero borrado. Mire la cuarta columna de la salida de lsof: Descriptor de archivo número 4 abierto para lectura (4r)
¡Vamos a ejecutar GDB!
¡Eso es!
Nuestros 10 MB son bienvenidos :)
El proceso aún se está ejecutando.
fuente
Este comando mostrará todos los archivos eliminados aún abiertos en un sistema Solaris:
Puede truncar los que está seguro que desea con este comando:
siendo p el id del proceso yx el descriptor de archivo devuelto por el primer comando.
No se preocupe si con algunos programas el tamaño reportado
ls
se restablece al tamaño antes del truncamiento después de un tiempo, el tamaño real utilizado en el disco será mucho menor ya que el archivo ahora es escaso.fuente
Puede intentar ir al
/proc/<pid>/fd
directorio y truncar el descriptor de archivo correspondiente. Digamos que fd = 3 puntos al archivo eliminado de pid == 123:fuente
Ninguna de estas soluciones funcionó para mí. Solo después de usar Bleachbit como root pude liberar adecuadamente el espacio asociado con los archivos eliminados.
fuente