df
コマンドとdu
コマンドの出力に違いがあるのはなぜですか?
なぜ出力が正確でないのですか?
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 1012M 394M 567M 42% /
/dev/sda2 99M 47M 48M 50% /boot
/dev/sda8 9.9G 1.5G 7.9G 16% /home
none 1004M 0 1004M 0% /dev/shm
/dev/sda9 347G 93G 236G 29% /srv
/dev/sda11 2.0G 81M 1.8G 5% /tmp
/dev/sda10 4.0G 1.3G 2.6G 33% /usr
/dev/sda6 4.0G 2.1G 1.8G 55% /usr/local
/dev/sda5 20G 19G 0 100% /var
しかし、私がdu -sh /var
4.6Gのみが使用されていると報告されています。
# du -sh /var
4.6G /var
これの標準的な原因は、削除されたファイルを開いたままにするユーザープロセスです。これが発生すると、ファイルがディレクトリツリーに表示されなくなるため、スペースは「du」を介して表示されなくなります。ただし、スペースは、割り当てが解除されるまでファイルによって使用されます。これは、ファイルを開いている最後のプロセスがファイルのファイル記述子を閉じるか、プロセスが終了した場合にのみ発生します。 lsofプログラムを使用して、開いているファイルを保持しているプロセスを見つけようとすることができます。通常、ローテーションされるのはログファイル、または大きなデータベースファイルですが、古いプロセスの中にはログファイルを開いたままにしているものがあります。
source: ‘df’コマンドVS‘du ’コマンド
これを試してください:
http://www.cyberciti.biz/tips/freebsd-why-command-df-and-du-reports-different-output.html
Linuxプログラム/プロセスによってファイルが開かれている、または使用されているときにファイルが(rmコマンドによって)削除されると、「ファイル記述子を開く」問題が発生し、Linuxファイルシステムが実際の図を報告する際に混乱します。使用済みディスクスペースまたは使用可能な空きディスクスペースの。
偽の「ディスク容量がいっぱい」の問題を解決するには、つまり「使用済みディスク容量」を再利用するには、「無効なプロセス」を強制終了または終了する必要があります。この場合、ファイルが機能している間は無効なプロセスになるrmコマンド使用されています。
これらの無効なプロセスが終了すると、「ファイル記述子を開く」問題が解決され、duコマンドとdfコマンドの両方が、実際のファイルシステムの使用済みディスク領域または空きディスク領域を報告することに同意します。
Duコマンドとdfコマンドで使用されているディスク容量の違いを解決するために、ファイル記述子を開く問題の原因となっている無効なプロセスを見つけて終了または強制終了するにはどうすればよいですか?
この特定のシナリオでは、lsofコマンド(list open fileコマンド)が光を示すのに最適です。
#lsof | grep "deleted"
lsofコマンド出力の2番目の列でLinuxプロセスIDを探します。 7番目の列は、「削除」されるファイルのサイズです(ただし、成功せず、無効なプロセスであることが判明します)。
ここで、LinuxプロセスIDを強制終了して、DUとDFの正しい出力を確認する必要があります。次のコマンドを使用して、プロセスIDを強制終了します。
#lsof | grep "deleted" | awk '{print $2}' | xargs kill -9
次に、両方のコマンドでディスク使用量を確認します。あなたは違いを得るべきではありません。
これはあなたの場合には当てはまりませんが、一般的には-x
フラグをdu
に覚えておくことが重要です。そうしないと、他のマウントされたファイルシステムに入り、df
出力(デフォルトではファイルシステムごと)と一致しない可能性があります。
これはもちろん質問の後の方法なので、後世のためです。
これには別の(あまり一般的ではありませんが重要な)原因が考えられます-マウントされたディレクトリ。
ディレクトリ(/multimedia
)が別の場所(/usr/something/media
)にマウントされているシナリオ(たとえば、FreeBSD jailを使用しているとき)を考えてみましょう。ここでdu
を実行すると、/usr/something/media
ディレクトリの下に/ multimediaディレクトリのサイズが含まれるため、/usr
のサイズが大きくなります。ただし、df
は/usr
の実際のサイズを表示します-マウントされた/multimedia
ディレクトリの内容を除きます。