GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo resolver estadísticas de uso de disco erráticas de du (comando de Linux)

Recientemente, en mi caja de servidor Linux, una de las particiones del disco estaba llena y tuvo que eliminar cientos de MB de archivos grandes para liberar espacio. Después de despejar el espacio, la partición aún se mostraba llena y no había espacio libre para guardar mis archivos. Más tarde, para mi sorpresa, noté la disparidad a continuación:

¡El comando de uso del disco (du) mostró el espacio utilizado como solo 11G!

-bash-3.2# du -chs /myhome/
11G     /myhome/
11G     total
-bash-3.2#

El comando anterior no incluye archivos y directorios de puntos ocultos. Use el siguiente comando para encontrar el uso del disco mediante archivos y directorios de puntos ocultos también.

-bash-3.2#du  -sch .[!.]* /myhome/*

Si aún desea enumerar los archivos exactos y sus rutas absolutas, use el siguiente comando:

-bash-3.2# du -h -x /myhome/*

¡Pero el comando df mostró que la partición del disco /myhome/ estaba llena!

-bash-3.2$ df -h
Filesystem           	 Size  	Used 	Avail 	Use% 	Mounted on
/dev/cciss/c0d0p8      	20G  	  14G  	4.7G  	75% 	/
/dev/cciss/c0d0p9    	 9.7G 	 1.3G  	8.0G  	14% 	/tmp
/dev/cciss/c0d0p3    	 30G	 4.3G    24G  	16% 	/usr
/dev/cciss/c0d0p10        44G     41G     0G  	100% 	/myhome
/dev/cciss/c0d0p6    	  30G     27G  	670M  	98% 	/var
/dev/cciss/c0d0p5    	  30G     20G  	8.0G  	72% 	/opt
/dev/cciss/c0d0p2   	   78G    21G    54G  	28% 	/export
/dev/cciss/c0d0p1   	  4.9G    173M  4.5G   	4% 	/boot
tmpfs                	 7.9G  	 0  7	.9G   	0% 	/dev/shm
tmpfs              	 491M   61M  	431M  	13% 	/var/lib/ganglia/rrds

Ahora el desafío es averiguar dónde está el espacio restante. ¿Está escondido en alguna parte?

Utilice el comando LSOF para encontrar los archivos abiertos

Es posible que haya eliminado algunos de los archivos, pero el proceso aún se habría mantenido abierto. Hasta que cierre esos archivos, el espacio no se liberará. Debajo del comando "lsof" le indicará qué archivos eliminados aún se mantienen abiertos.

-bash-3.2# /usr/sbin/lsof | grep deleted |grep /myhome
java      10249            ramya    1u      REG             104,10 45866276291    4645619 /myhome/var/container.log (deleted)
java      10249            ramya    2u      REG             104,10 45866276291    4645619 /myhome/var/container.log (deleted)

Ahora tendrías alguna pista, ¿no es así? Sí, el archivo /myhome/var/container.log que se eliminó todavía está abierto por la identificación del proceso:10249. Ahora vaya al directorio de identificación del proceso correspondiente en /proc como se muestra a continuación:

-bash-3.2# cd /proc/10249/fd/

Enumere los archivos para ver el enlace del controlador de archivos al archivo eliminado.

-bash-3.2# ls -lrt | grep /myhome/
lrwx------ 1 ramya ramya 64 Feb 13 14:04 2 -> /myhome/var/container.log (deleted)
lrwx------ 1 ramya ramya 64 Feb 13 14:04 1 -> /myhome/var/container.log (deleted)

Ahora borre el controlador de archivos correspondiente para liberar espacio usando el siguiente comando:

-bash-3.2# cat /dev/null > /proc/10249/fd/1
-bash-3.2# cat /dev/null > /proc/10249/fd/2

Tenga en cuenta que el inodo aún estaría abierto, pero ahora tiene una longitud de 0.

-bash-3.2# /usr/sbin/lsof | grep deleted |grep /myhome
java      10249            ramya    1u      REG             104,10 0    4645619 /myhome/var/container.log (deleted)
java      10249            ramya    2u      REG             104,10 0    4645619 /myhome/var/container.log (deleted)

Ahora revisa la partición del disco para tener una sonrisa en tu rostro.

-bash-3.2# df -h |grep /myhome
/dev/cciss/c0d0p10     44G   12G   30G  28% /myhome

Linux
  1. Cómo borrar un comando específico del historial de Bash en Linux

  2. Linux:¿cómo minimizar el uso del espacio en disco?

  3. ¿Cómo obtener el uso del disco desde la línea de comandos?

  4. Comando df de Linux

  5. ¿Cómo monitorear el uso de la red con nload en Linux?

Cómo quitar un comando del historial en Linux

Cómo comprobar las estadísticas de red de Linux desde la línea de comandos

Cómo visualizar el uso del disco en Linux usando Baobab

Cómo visualizar el uso del espacio en disco con Vizex

Linux du Command Ejemplos más útiles

¿Cómo analizar el uso del disco en la línea de comandos de Linux?