GNU/Linux >> Linux の 問題 >  >> Linux

duからの不規則なディスク使用統計を解決する方法(Linuxコマンド)

最近、私のLinuxサーバーボックスで、ディスクパーティションの1つがいっぱいになり、スペースを空けるために数百MBの大きなファイルを削除する必要がありました。スペースをクリアした後も、パーティションはいっぱいで、ファイルを保存するための空きスペースがありませんでした。後で驚いたことに、以下の格差に気づきました:

ディスク使用量コマンド(du)は、使用済みスペースを11Gのみと表示しました!

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

上記のコマンドには、隠しドットファイルとディレクトリは含まれていません。以下のコマンドを使用して、隠しドットファイルとディレクトリによるディスク使用量も確認します。

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

さらに正確なファイルとその絶対パスを一覧表示する場合は、次のコマンドを使用します。

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

しかし、dfコマンドはディスクパーティション/myhome/がいっぱいであると表示されました!!!

-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

ここでの課題は、残りのスペースがどこにあるかを見つけることです。どこかに隠されていますか?

LSOFコマンドを使用して開いたままのファイルを検索します

一部のファイルを削除した可能性がありますが、プロセスは開いたままになっています。これらのファイルを閉じるまで、スペースは解放されません。 「lsof」コマンドの下に、削除されたファイルがまだ開いたままになっていることがわかります。

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

今、あなたはいくつかの手がかりを持っているでしょう?はい、削除されたファイル/myhome/var/container.logは、プロセスID:10249でまだ開いています。次に、以下に示すように、/procの対応するプロセスIDディレクトリに移動します。

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

ファイルを一覧表示して、削除されたファイルにリンクしているファイルハンドラーを確認します。

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

次に、対応するファイルハンドラーをクリアして、以下のコマンドを使用してスペースを解放します。

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

iノードはまだ開いていますが、長さは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)
>

次に、ディスクパーティションをチェックして、笑顔を見せてください。

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

Linux
  1. LinuxでBashの履歴から特定のコマンドをクリアする方法

  2. Linux –ディスクスペースの使用を最小限に抑える方法は?

  3. コマンドラインからディスク使用量を取得する方法は?

  1. Linuxdfコマンド

  2. Linuxでnloadを使用してネットワークの使用状況を監視する方法は?

  3. 「du」コマンドを使用して Linux でのディスク使用量を確認する

  1. Linuxでディスクスペースの使用状況を確認する方法

  2. Linuxddコマンドを使用してディスクをクローン化する方法

  3. Linuxでnloadを使用してネットワークの使用状況を監視する方法