GNU/Linux >> Znalost Linux >  >> Linux

Správný převod statvfs na procento zdarma

Ve vaší úpravě č. 2 je třeba aktualizovat výpočet % využití na toto, aby odpovídal výstupu df:

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

Uvažování:
Použité =f_blocks - f_bfree
Avail =f_bavail
df % =Použité / (Použité + Avail)


df data mohou být založena na f_bavail , nikoli f_bfree . Možná bude užitečné podívat se na zdrojový kód df, abyste viděli, jak to dělá. Má řadu okrajových případů, se kterými se musí vypořádat (např. když použitý prostor překročí velikost prostoru dostupného uživatelům bez oprávnění root), ale příslušný kód pro normální případ je zde:

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

Jinými slovy 100 * used / (used + available) , zaokrouhleno nahoru. Zapojením hodnot z vašeho výstupu df získáte 100 * 14159676 / (14159676 + 25837672) = 35.4015371 , což je zaokrouhleno 36 %, stejně jako df vypočítané.


Linux
  1. Převod kódu Python 2 na Python 3

  2. Najděte velikost a volné místo v souborovém systému obsahujícím daný soubor

  3. Proč se používá Swap, když zbývá spousta volné paměti?

  1. Jak správně přidat cestu k cestě?

  2. Linux – skutečné využití paměti?

  3. Linux – správně určit využití paměti v Linuxu?

  1. Co se stalo s volným prostorem?

  2. Recenze Nagios XI (bezplatné jádro Nagios vs Nagios XI)

  3. free:příkaz nenalezen