GNU/Linux >> Tutoriels Linux >  >> Linux

Comment résoudre les statistiques d'utilisation erratiques du disque à partir de du (commande Linux)

Récemment, sur mon serveur Linux, l'une des partitions de disque était pleine et a dû supprimer des centaines de Mo de fichiers volumineux pour libérer de l'espace. Après avoir libéré l'espace, la partition était toujours pleine et il n'y avait pas d'espace libre pour enregistrer mes fichiers. Plus tard, à ma grande surprise, j'ai remarqué la disparité ci-dessous :

La commande d'utilisation du disque (du) a montré que l'espace utilisé n'était que de 11 G !

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

La commande ci-dessus n'inclut pas les fichiers et répertoires de points cachés. Utilisez la commande ci-dessous pour trouver également l'utilisation du disque par les fichiers et répertoires de points cachés.

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

Si vous souhaitez encore plus lister les fichiers exacts et leurs chemins absolus, utilisez la commande ci-dessous :

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

Mais la commande df a montré que la partition de disque /myhome/ était pleine !!!

-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

Maintenant, le défi est de savoir où est l'espace restant ? Est-il caché quelque part ?

Utiliser la commande LSOF pour trouver les fichiers maintenus ouverts

Vous avez peut-être supprimé certains des fichiers, mais le processus serait toujours resté ouvert. Jusqu'à ce que vous fermiez ces fichiers, l'espace ne sera pas libéré. La commande "lsof" ci-dessous vous indiquera quels fichiers supprimés sont toujours ouverts !

-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)

Maintenant, vous auriez une idée, n'est-ce pas? Oui, le fichier /myhome/var/container.log qui a été supprimé est toujours ouvert par l'identifiant de processus :10249. Allez maintenant dans le répertoire d'identifiant de processus correspondant dans /proc comme indiqué ci-dessous :

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

Répertoriez les fichiers pour voir le gestionnaire de fichiers lié au fichier supprimé.

-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)

Effacez maintenant le gestionnaire de fichiers correspondant pour libérer de l'espace à l'aide de la commande ci-dessous :

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

Notez que l'inode serait toujours ouvert, mais il a maintenant une longueur 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)

Vérifiez maintenant la partition de disque pour avoir un sourire sur votre visage.

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

Linux
  1. Comment effacer une commande spécifique de l'historique Bash sous Linux

  2. Linux - Comment minimiser l'utilisation de l'espace disque ?

  3. Comment obtenir l'utilisation du disque à partir de la ligne de commande ?

  4. Commande Linux df

  5. Comment surveiller l'utilisation du réseau avec nload sous Linux ?

Comment supprimer une commande de l'historique sous Linux

Comment vérifier les statistiques du réseau Linux à partir de la ligne de commande

Comment visualiser l'utilisation du disque sous Linux avec Baobab

Comment visualiser l'utilisation de l'espace disque avec Vizex

Linux du Command Exemples les plus utiles

Comment analyser l'utilisation du disque dans Linux en ligne de commande ?