web-dev-qa-db-ja.com

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

コマンドdf -h /tmpを実行するとディスク使用率は100%ですが、du -sh /tmpを試そうとするとディスク使用率は2%と表示されます。

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

コンテキスト:/tmpは、独自のファイルシステムにインストールされます。 VPSアカウントでUbuntu 12.04サーバーエディションを使用しています。この問題により、/tmpの使用率がdfに応じて100%になるため、一部のプログラムは/tmpの空き領域について文句を言います。

8
Nischay

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

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

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

別の方法としては、開いているファイルをスキャンし、削除されたファイルを解放しなかったプロセスを再起動または強制終了します。

10
Mahesh

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

1
Nick