Me he encontrado con un problema en uno de mis servidores que ejecutan 16.04: no queda espacio en disco.
No tengo idea de lo que está ocupando el espacio. ¿Hay un comando para enumerar los tamaños de directorio actuales, para que pueda recorrer y terminar en el directorio ocupando todo el espacio?
disk-usage
Karl Morrison
fuente
fuente
export DISPLAY=:0.0; ssh -Y <user>@<server> filelight
(reemplacefilelight
con su herramienta preferida). Por supuesto, sin absolutamente ningún espacio, si aún no tiene la herramienta instalada, ¡necesitará usar otra cosa de todos modos!Respuestas:
Como siempre en Linux, hay más de una forma de hacer el trabajo. Sin embargo, si necesita hacerlo desde CLI, este es mi método preferido:
Empiezo ejecutando esto como root o con sudo:
El grep es limitar las líneas de retorno a aquellas que regresan con valores en el rango de Megabyte o Gigabyte. Si sus discos son lo suficientemente grandes, también puede agregarlos
|T
para incluir cantidades de terabytes. Puede obtener algunos errores en/proc
,/sys
y / o/dev
ya que no son archivos reales en el disco. Sin embargo, aún debe proporcionar una salida válida para el resto de los directorios en la raíz. Después de encontrar los más grandes, puede ejecutar el comando dentro de ese directorio para reducir su camino hacia el culpable. Entonces, por ejemplo, si/var
fuera el más grande, podría hacerlo así a continuación:¡Eso debería llevarlos al problema, niños!
consideraciones adicionales
Si bien el comando anterior ciertamente hará el truco, tuve algunas críticas constructivas en los comentarios a continuación que señalaron algunas cosas que también podría incluir.
grep
que proporcioné podría ocasionar que se devuelva el valor ocasional de "K" si el nombre del directorio o archivo tiene una G o una M mayúscula. Si no desea que se muestre ninguno de los directorios con valor de K, le gustaría subir tu juego regex para ser más creativo y complejo. p.ejgrep -E "^[0-9\.]*[MG]"
Si sabe qué unidad es el problema y tiene otras unidades montadas encima que no desea perder el tiempo, incluso en su búsqueda, puede agregar el
-x
indicador a sudu
comando. Descripción de la página de manual de esa bandera:Puede ordenar la salida del
du
comando para que el valor más alto esté en la parte inferior. Solo agregue esto al final del comando:| sort -h
fuente
"^[0-9]*[.]*[0-9]*[MG]"
-x
opción paradu
quedarse en esa unidad (proporcionada en la línea de comandos). También puede canalizarsort -h
para ordenar correctamente los valores legibles por megabyte / gigabyte. Por lo general, dejaría la--max-depth
opción y solo buscaría en toda la unidad de esta manera, clasificando adecuadamente para obtener las cosas más grandes en la parte inferior./
), y el uso-x
me da la garantía de que no contaré mal las cosas. Si/
está lleno y tiene un dispositivo montado por separado/home
o lo que sea, usarlo-x
es prácticamente una necesidad para deshacerse de las cosas irrelevantes. Así que creo que es más fácil usarlo todo el tiempo, por si acaso.Puedes usar
ncdu
para esto. Funciona muy bien.fuente
curl http://path/to/ncdu | sh
, y se ejecutará en un caché stdin IO en memoria, pero eso requerirá algo de suerte. Probablemente también haya una manera de hacer un disco RAMsudo ncdu /
desde la línea de comandos.sudo
porque si no pone sudo, no informará los tamaños de las carpetas propiedad de root, y/
porque si no escribe eso solo informará de forma recusiva desde la carpeta en la que se encuentraYo uso este comando
sudo du -aBM -d 1 . | sort -nr | head -20
Ocasionalmente, necesito ejecutarlo desde el
/
directorio, ya que he colocado algo en una ubicación extraña.fuente
-d 1
interruptor (y generalmente con enless
lugar dehead -20
), para obtener una lista completa recursivamente enumerada de todos los archivos y directorios ordenados por el espacio que consumen. De esa manera, si veo un directorio que ocupa mucho espacio, simplemente puedo desplazarme hacia abajo para ver si la mayor parte del espacio está realmente ocupado por algún archivo o subdirectorio específico. Es una buena manera de encontrar algunos archivos y directorios innecesarios para eliminar para liberar espacio: simplemente desplácese hacia abajo hasta que vea algo que está seguro de que no desea conservar, elimínelo y repita.sort
espera a que se complete la salida antes de comenzar la salida.Ya hay muchas buenas respuestas sobre formas de encontrar directorios que ocupan la mayor parte del espacio. Si tiene razones para creer que el problema principal son pocos archivos grandes, en lugar de muchos pequeños, podría usar algo como esto
find / -size +10M
.fuente
No conozco Ubuntu y no puedo verificar mi respuesta, pero publico aquí mi respuesta en función de mi experiencia como administrador de Unix hace mucho tiempo.
Descubre qué sistema de archivos se queda sin espacio
enumerará todo el sistema de archivos, su tamaño y su espacio libre. Solo pierdes tiempo si investigas los sistemas de archivos que tienen suficiente espacio. Suponga que el sistema de archivos completo es / myfilesystem. compruebe la salida de df si hay sistemas de archivos montados en subdirecciones de / myfilesystems. Si es así, los siguientes speps deben adaptarse a esta situación.
Descubra cuánto espacio usan los archivos de este sistema de archivos
La opción -x puede usarse para garantizar que solo se tengan en cuenta los archivos que son miembros de este sistema de archivos. Algunas variantes de Unix (por ejemplo, Solaris) no conocen la opción -x para du. Luego debe usar algunas soluciones para encontrar el du de su sistema de archivos.
Ahora verifique si el du de los archivos visibles es aproximadamente del tamaño del espacio utilizado mostrado por df. Si es así, puede comenzar a buscar los archivos / directorios grandes del sistema de archivos / myfilesystem para limpiar.
para encontrar los subdirectorios más grandes de un directorio /.../dir use
La opción -k obliga a du a generar el sie en kilobytes sin ninguna unidad. Este puede ser el valor predeterminado en algunos sistemas. Entonces puedes omitir esta opción. Los archivos / subdirectorios más grandes se mostrarán en la parte inferior de la salida.
Si ha encontrado un archivo / directorio grande que ya no necesita, puede eliminarlo de la manera adecuada. No te preocupes por los pequeños directorios en la parte superior de la salida. No resolverá su problema si los elimina. Si aún no tiene suficiente espacio, puede repetir el paso 4 en los subdirectorios más grandes que se muestran al final de la lista.
Pero, ¿qué sucede si la salida du no es aproximadamente el espacio disponible que muestra df?
Si la salida du es mayor, entonces se ha perdido un subdirectorio donde está montado otro sistema de archivos. Si la salida du es mucho más pequeña, los archivos som no se muestran en ningún directorio que inspeccione. Puede haber diferentes razones para sus fenómenos.
Algunos procesos están utilizando un archivo que ya fue eliminado. Por lo tanto, estos archivos se eliminaron del directorio y no pueden verlos. Pero para el sistema de archivos, sus bloques siguen en uso hasta que los procesos cierran los archivos. Puede intentar averiguar los procesos relevantes (por ejemplo, con lsof) y obligarlos a cerrar estos archivos (por ejemplo, deteniendo la aplicación o eliminando los procesos). O simplemente reinicia su máquina.
hay archivos en los directorios que ya no son visibles porque en uno de sus directorios principales se monta otro sistema de archivos. Entonces, si tiene un archivo / myfilesysem / subdir / bigfile y ahora monta otro sistema de archivos en / myfilesystem / subdir, ya no podrá ver este archivo y
informará un valor que no contiene el tamaño de / myfilesystem / subdir / bigfile. La única forma de averiguar si existen dichos archivos es desmontar / myfilesystem / subir y consultar con
si contiene archivos
Puede haber tipos especiales de sistemas de archivos que usan / reservan espacio en un disco que no es visible para el comando ls. Necesita herramientas especiales para mostrar esto.
Además de esta forma sistemática de usar el comando du, hay otras que puedes usar. Por lo tanto, puede usar el comando find para buscar archivos que sean más grandes que algún valor que proporcione, puede buscar archivos que sean más grandes que algún valor que proporcione o que se hayan creado recientemente o tengan un nombre especial (por ejemplo, * .log, core, * .trc). Pero siempre debe hacer un df como se describe en 1 para trabajar en el sistema de archivos correcto
fuente
/tmp
un sistema de archivos separado (por ejemplo, un tmpfs) y algo creó archivos/tmp
antes de que se convirtiera en un punto de montaje para un sistema de archivos diferente. Ahora estos archivos se encuentran en el sistema de archivos raíz, sombreados por un punto de montaje y no puede acceder a ellos sin reiniciar el modo de recuperación (que no se procesa/etc/fstab
) o, como sugiere, un montaje de enlace.En caso de que también esté interesado en no usar un comando, aquí hay una aplicación: Filelight
Le permite visualizar rápidamente qué está utilizando el espacio en disco en cualquier carpeta.
fuente
ssh -X <your host>
y luego ejecuta tu programa desde la línea de comandosIntente
sudo apt-get autoremove
eliminar los archivos no utilizados si aún no lo ha hecho.fuente
A menudo uso este
Luego, si encuentro algunas carpetas grandes, lo cambiaré y haré más investigaciones
Si es necesario, también puede ordenarlo automáticamente con
fuente
No es realmente una respuesta, sino un apéndice.
Se te acaba el espacio y no puedes instalar ncdu a partir de la respuesta de @erman.
Algunas sugerencias
sudo apt clean all
para eliminar paquetes que ya ha descargado. SEGUROsudo rm -f /var/log/*gz
purgar archivos de registro anteriores a una o dos semanas: no eliminará los registros más recientes / actuales. MUY SEGUROsudo lsof | grep deleted
enumere todos los archivos abiertos, pero filtre a los que se han eliminado del disco. BASTANTE SEGUROsudo rm /tmp/*
elimine algunos archivos temporales; si algo los está utilizando, podría alterar un proceso. NO ES TAN SEGUROQue `uno de ellos puede devolver líneas como esta:
No se puede hacer mucho por la línea de inicio, pero la segunda línea sugiere que salt-minion tiene un archivo abierto que se eliminó, y los bloques de disco se devolverán una vez que se reinicien todos los identificadores de archivos.
Otros sospechosos comunes aquí incluirían syslog / rsyslog / syslog-ng, squid, apache o cualquier proceso que ejecute su servidor que sea "pesado".
fuente
Encuentro particularmente valioso el resultado de herramientas como Filelight, pero, como en su caso, en los servidores normalmente no hay GUI instalada, pero el
du
comando siempre está disponible.Lo que normalmente hago es:
du
salida en un archivo (du / > du_output.txt
);DuFS
para "montar" ladu
salida en un directorio temporal;DuFS
usa FUSE para crear un sistema de archivos virtual (= no se crean realmente archivos, todo es falso) de acuerdo con ladu
salida;Descargo de responsabilidad: escribí
dufs
, exactamente porque a menudo tengo que averiguar qué ocupa el espacio en disco en las máquinas sin cabeza.fuente
Similar a @TopHat, pero filtra algunos archivos si tienen M, G o T en el nombre. No creo que pierda tamaño en la primera columna, pero no coincidirá con el nombre del archivo a menos que nombre los archivos de manera creativa.
Los interruptores de la línea de comando se explican aquí, ya que no sabía qué hacía el c o a.
fuente