GNU/Linux >> Linux Esercitazione >  >> Linux

Conversione corretta di statvfs in percentuale gratuita

Nella tua modifica n. 2, il calcolo Usage% deve essere aggiornato a questo per corrispondere all'output df:

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

Ragionamento:
Usato =f_blocks - f_bfree
Avail =f_bavail
df % =Usato / (Usato + Disponibile)


df i dati di possono essere basati su f_bavail , non f_bfree . Potresti trovare utile guardare il codice sorgente di df per vedere come fa le cose. Ha un numero di casi limite che deve affrontare (ad esempio, quando lo spazio utilizzato supera la quantità di spazio disponibile per gli utenti non root), ma il codice pertinente per il caso normale è qui:

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

In altre parole, 100 * used / (used + available) , arrotondato. Inserendo i valori dall'output df si ottiene 100 * 14159676 / (14159676 + 25837672) = 35.4015371 , che arrotondato per eccesso è il 36%, proprio come df calcolato.


Linux
  1. Conversione del codice Python 2 in Python 3

  2. Come aggiungere correttamente un percorso al percorso?

  3. Linux:reale utilizzo della memoria?

  4. gratuito:comando non trovato

  5. Come ottenere la percentuale di utilizzo della memoria con vmstat?

25 libri gratuiti per imparare Linux gratuitamente

Spiegazione del comando dello schermo su Linux

90 comandi Linux usati frequentemente dagli amministratori di sistema Linux

SystemD - A cosa serve SystemD?

Esempi di comandi gratuiti in Linux

Come visualizzare i dispositivi utilizzati/lo spazio libero quando si utilizza LVM?