duとquotaの結果が一致しないのはなぜですか?

duとquotaの結果が一致しないのはなぜですか?

ルートアクセス権を持たないシステムでディスククォータを超えました。古いファイルを削除しようとしましたが、まだ終了しました。duスペースを使い尽くしたところを探すために走ってみましたが、スペースをほとんど使わなかったと報告されました。

なぜなら。 。 。結果quota

   /home/1234$ quota -s
   Disk quotas for user 1234 (uid 1234): 
        Filesystem   space   quota   limit   grace   files   quota   limit   grace
       cslab:/home   4519M*  4096M   5120M   09:47    6155       0       0 

~からdu

   /home/1234$ du -mad 1
   ...
   936     total

quota実際にduは0.9GBしか計算されませんが、なぜ4.5GBを使うと表示されるのかわかりません。私が持っているファイルも確認してみると/tmpそこに50MBファイルがあります。残りの3.5GBファイルはどこにありますか?クォータシステムが正しくないため、リセットする必要がある可能性はありますか?

答え1

一部のプロセスでは、まだ一部のファイルが開いている可能性があると思います。以下を使用して一覧表示できます。

lsof | grep username | grep deleted

より良いバージョンは、次のものを使用することです。

lsof +L1 | grep username

duquotaただし、時々このセクションで説明されているものとの間の出力に違いがあるかもしれません。協会。リンクから来たのですが、

Unixでは、duコマンドとquotaコマンドは異なる値を報告できます。この違いが発生するのは、ファイルシステムを巡回し、クォータを確認し、使用量テーブルを更新するプロセスが特定の時間だけ実行されるためです。したがって、クォータチェックの間にquota -vコマンドが無効なディスク使用量を報告する期間があります。ファイルサイズに関する最も正確な情報を取得するには、duコマンドを使用します。

答え2

quotaこれは、ファイルが実際に占めるブロックを見つけるためにファイルシステムを照会するように機能します。

duディレクトリを再帰的に検索してファイルを見つけます。

これら2つの方法は異なる結果をもたらすことができます。たとえば、ファイルを「削除」すると、ディレクトリを一覧表示するとそのファイルは表示されなくなります。ただし、ディスクの最後のファイルハンドルが閉じられるまで、ディスクのブロックは実際に解放されません。この場合、ファイルのペアは表示されませんが、duまだクォータに含まれます。

関連情報