dfとduが異なる出力を表示するのはなぜですか?


8

私は、コマンドを実行するとdf -h /tmp、それは述べているディスクの使用率が100%であるが、それはしようとすると、du -sh /tmpそれは言う、ディスク使用率が2%です

これらのコマンドが異なる出力を表示する理由、これらの2つのコマンドがどのように機能するか、およびこの問題の解決策は何かを知りたいです。

コンテキスト: /tmp独自のファイルシステムにインストールされます。VPSアカウントでUbuntu 12.04サーバーエディションを使用しています。この問題により、一部のプログラムでは/tmp100%の使用率がのdf空き容量について不満を示してい/tmpます。

回答:


10

du 到達可能なiノードをスキャンしてサイズを計算することにより、空き容量を報告します。

ファイルが作成され、開かれ、その後まだ開かれているときに削除された場合、そのファイルを開いたプログラムは引き続きファイルにアクセスでき、ディスク上のそのメモリの場所に対して書き込みと読み取りを実行できます。duはそのような開いているファイルを考慮に入れませんdf

単純な再起動で/ tmpがフラッシュされ、問題が解決するはずです。

代わりに、開いているファイルをスキャンして、削除されたファイルを解放しなかったプロセスを再起動または強制終了することもできます。


1

ルートファイルシステム上の一部のファイルは、マウントポイントの背後に隠れている可能性があります。対応するデバイスがマウントされていない場合は、マウントポイント下にファイルを作成できます。デバイスが再度マウントされた場合、duコマンドではファイルはカウントされません。duとdfの結果に大きな違いがある場合の非常にありそうな問題。


ビンゴ。これが原因でした。
jdhildeb 2018

-1

sudo実行するときに確認してくださいdu。たとえば、を実行した場合、du -hs /*を追加しない限り、実際のディスク使用量は表示されませんsudo

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.