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

statvfs をパーセンテージ フリーに正しく変換する

編集 #2 では、df 出力と一致するように、Usage% の計算をこれに更新する必要があります:

100.0 * (double) (vfs.f_blocks - vfs.f_bfree) / (double) (vfs.f_blocks - vfs.f_bfree + vfs.f_bavail)

理由:
使用 =f_blocks - f_bfree
アベイル =f_bavail
df % =使用済み / (使用済み + 使用可能)


df のデータは f_bavail に基づいている可能性があります 、 f_bfree ではありません . df のソース コードを調べて、どのように動作するかを確認すると役立つ場合があります。処理が必要ないくつかの特殊なケースがあります (たとえば、使用されているスペースが非 root ユーザーが使用できるスペースの量を超えている場合) が、通常のケースに関連するコードは次のとおりです:

  uintmax_t u100 = used * 100;
  uintmax_t nonroot_total = used + available;
  pct = u100 / nonroot_total + (u100 % nonroot_total != 0);

つまり、100 * used / (used + available) 、 切り上げ。 df 出力からの値を差し込むと、 100 * 14159676 / (14159676 + 25837672) = 35.4015371 が得られます 、切り上げは 36% で、df と同じです。


Linux
  1. Linux –実際のメモリ使用量?

  2. 特定のファイルを含むファイルシステムのサイズと空き容量を見つける

  3. Maildir を PST に変換する

  1. Python2コードをPython3に変換する

  2. Linux が Unix に基づいており、Linux が無料であるのに、なぜ Unix がまだ使用されているのですか?

  3. 十分な空きメモリが残っているときにスワップが使用されるのはなぜですか?

  1. パスをパスに正しく追加する方法は?

  2. Linux – Linuxのメモリ使用量を正しく判断しますか?

  3. 空きスペースはどうなりましたか?