GNU/Linux >> Tutoriels Linux >  >> Linux

Conversion correcte de statvfs en pourcentage gratuit

Sur votre Edit #2, le calcul du pourcentage d'utilisation doit être mis à jour pour correspondre à la sortie df :

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

Raisonnement:
Utilisé =f_blocks - f_bfree
Dispo =f_bavail
df % =Utilisé / (Utilisé + Dispo)


df Les données de peuvent être basées sur f_bavail , pas f_bfree . Vous trouverez peut-être utile de regarder le code source de df pour voir comment il fait les choses. Il a un certain nombre de cas extrêmes qu'il doit traiter (par exemple, lorsque l'espace utilisé dépasse la quantité d'espace disponible pour les utilisateurs non root), mais le code pertinent pour le cas normal est ici :

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

En d'autres termes, 100 * used / (used + available) , arrondi. Brancher les valeurs de votre sortie df donne 100 * 14159676 / (14159676 + 25837672) = 35.4015371 , qui est arrondi à 36 %, tout comme df calculé.


Linux
  1. Comment ajouter correctement un chemin à un chemin ?

  2. Linux - Détermination correcte de l'utilisation de la mémoire sous Linux ?

  3. Qu'est-il arrivé à l'espace libre ?

  4. libre :commande introuvable

  5. Trouver la taille et l'espace libre du système de fichiers contenant un fichier donné

25 livres gratuits pour apprendre Linux gratuitement

Commande d'écran sur Linux expliquée

90 commandes Linux fréquemment utilisées par les administrateurs système Linux

SystemD - A quoi sert SystemD ?

exemples de commandes gratuits sous Linux

Comment afficher les appareils utilisés/l'espace libre lors de l'utilisation de LVM ?