¿Cómo se encuentran los archivos que ocupan el 80% del espacio en un servidor web Linux?

15

La unidad se está llenando constantemente. Has buscado todos los archivos de repuesto y aleatorios que puedas. grep'd para archivos coredump e incluso eliminó algunas de las copias de seguridad innecesarias ...

¿Cuál sería tu próximo movimiento?

El servidor real en cuestión tiene 10 GB de archivos de sitio web y el sistema operativo no debería ocupar más de 10 GB, entonces, ¿cómo rastrear lo que está llenando un disco de 50 GB (virtual)?

Gareth
fuente
unix.stackexchange.com/questions/125429/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Respuestas:

9

Creo que ncdu ( http://dev.yorhel.nl/ncdu ) es bastante útil para esto.

Scott
fuente
Perfecto. Interfaz brillante y la capacidad de manipular archivos desde el programa. ¡Salud!
Gareth el
23

Seguramente hay formas más elaboradas, pero la que recuerdo es

du --max-depth = 1 -h /

Ahora tome el directorio que usa más espacio (du --max-depth=1 -h /yourdir)y profundice hasta encontrar a su culpable.
Si desea que su salida esté ordenada por tamaño y no le interese el formato legible por humanos, también puede hacerlodu --max-depth=1 /your_dir | sort -n

Marie Fischer
fuente
Si. Hago casi lo mismo "du -S | sort -n -r | less". Realmente me encantaría ver un programa que se pareciera a htop y cron me gustaría mlocate, pero cuando lo ejecuté le proporcionó información precisa y contemporánea sobre los archivos en su sistema.
Gareth el
1
En lugar de comenzar desde / en el servidor web, intente comenzar desde http_root. Si no hay éxito allí, entonces uno puede ir por '/'. El directorio que se ejecuta en '/' tomará mucho tiempo.
Saurabh Barjatiya
4

Yo uso el programa Gnome baobab. Puede ejecutar esto en su escritorio y puede conectarse a través de SSH al servidor. Muestra un mapa gráfico fácil de leer sobre el uso del espacio en disco. Se instala en Gnome como "Analizador de uso de disco"

Josh
fuente
3

Prueba gt5 .

Pausado hasta nuevo aviso.
fuente
En segundo lugar, es ideal para rastrear hacia dónde va el espacio porque muestra diferencias.
Josh el
Encantador. Esta debería ser la respuesta correcta. Que súper hallazgo. Gracias.
PKHunter
2

df -k muestra qué fs son el problema. Luego cd al directorio de nivel superior para ello y ejecute du -xk | ordenar -n | tail -25 esto mostrará los 25 principales directorios, ordenados, para sun 9 o anterior, reemplace la x con una d.

Ronald Pottol
fuente
Sí, similar a lo que acabo de mencionar en la respuesta de @Marie Fischer. ¿Por qué usar -k (tamaño de bloque) aunque en lugar de -h para humanos?
Gareth el
-k se usa para que todos los tamaños se informen en kb. Esto es útil para sort. Sort sort pondría 10kb antes de 20mb mientras ordena.
Saurabh Barjatiya
1

Tenga en cuenta que los archivos se pueden eliminar mientras todavía se están escribiendo, por lo que utilizan el espacio en disco mientras se ejecuta su proceso de creación, pero no tienen un nombre de archivo.

Esto lo hace imposible de encontrar con las herramientas habituales: puede usar lsof para investigar qué procesos tienen archivos abiertos.

Thorbjørn Ravn Andersen
fuente
Yo uso /usr/sbin/lsof | grep deletedpara conseguir esto.
Kevin M
0

Si puede ejecutar software en el sistema, entonces xdiskusage le mostrará gráficamente qué directorios / archivos están consumiendo su espacio. Extremadamente útil.

Creo que KDE contiene algo similar.

Si es solo de texto y no puede instalar software adicional, entonces el uso creativo de duprobablemente lo llevará allí también.

sleske
fuente
0
  1. cd al directorio de inicio de los servidores web (directorio de inicio de apache)
  2. ejecuta el comando "du -a | head -30 | sort -nr"
  3. le dará los 30 archivos / directorios más grandes que consumen discos
  4. puedes encontrarlos y eliminarlos (si no son útiles)
Tecnologías ASEveryWhere
fuente
Esto no va a funcionar a menos que cambie el orden de heady sort. También debe hacer uso de las funciones de formato.
kasperd
0

Puede usar los siguientes comandos para encontrar qué archivos o carpetas ocupan demasiado espacio.

Por ejemplo, para mostrar los 20 directorios principales más grandes de la carpeta actual, use el siguiente one-liner:

du -ah . | sort -rh | head -20

o:

du -a . | sort -rn | head -20

Para los 20 archivos más grandes del directorio actual (recursivamente):

ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20

o con tamaños legibles por humanos:

ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20

El segundo comando para trabajar en OSX / BSD correctamente (como sortno tiene -h), debe instalar sortdesde coreutils. Luego agregue la carpeta bin a su PATH.

Puede definir estos comandos como alias (por ejemplo, agregar a sus archivos rc como .bash_profile):

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'

Luego, ejecute bigo big-filesdentro de las carpetas que cree que tienen lugar (por ejemplo, en /home).

kenorb
fuente
0

Aquí hay algo que improvisé para rastrear algunos procesos corruptos en nuestros servidores de bases de datos: rabbitfinder

#!/bin/sh
tree -s -f > /tmp/out1 && sleep 5 && tree -s -f > /tmp/out2; diff /tmp/out1 /tmp/out2 | egrep "\|--" | awk -F[ '{print $2}' | awk -F] '{print $2 }' | sort | uniq | xargs fuser -f | xargs ps -lFp

Es un poco grosero y no muy robusto, pero funciona así:

  1. generar una lista de árbol recursiva del directorio actual
  2. espera 5 segundos
  3. generar otra lista
  4. compara las dos salidas
  5. fusionar los archivos que han cambiado de tamaño y
  6. ps -lFp mostrará los archivos de qué proceso los posee

    user@poseidon:~$ tree -s -f > /tmp/out1 && sleep 5 && tree -s -f > /tmp/out2; diff /tmp/out1 /tmp/out2 | egrep "\|--" | awk -F[ '{print $2}' | awk -F] '{print $2 }' | sort | uniq | xargs fuser -f | xargs ps -lFp
    ./tmp/output:       
    F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN    RSS PSR STIME TTY          TIME CMD
    0 R 1000     14310 14275 23  80   0 -  1072 -        748   1 22:19 pts/2    00:00:06 dd if /dev/zero of ./output bs 1024 count 10000000
    
Greeblesnort
fuente