GNU/Linux >> Tutoriales Linux >  >> Linux

Convertir statvfs a porcentaje libre correctamente

En su edición n.º 2, el cálculo del % de uso debe actualizarse para que coincida con la salida de df:

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

Razonamiento:
Usado =f_blocks - f_bfree
Disponibilidad =f_bavail
df % =Usado / (Usado + Disponible)


df Los datos de pueden estar basados ​​en f_bavail , no f_bfree . Puede que le resulte útil mirar el código fuente de df para ver cómo funciona. Tiene una serie de casos extremos con los que debe lidiar (por ejemplo, cuando el espacio utilizado excede la cantidad de espacio disponible para usuarios que no son root), pero el código relevante para el caso normal está aquí:

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

En otras palabras, 100 * used / (used + available) , redondeado. Conectar los valores de su salida df da 100 * 14159676 / (14159676 + 25837672) = 35.4015371 , que redondeado es 36 %, al igual que df calculado.


Linux
  1. Convertir su código de Python 2 a Python 3

  2. Linux – ¿Uso de memoria real?

  3. Revisión de Nagios XI (Núcleo gratuito de Nagios Vs Nagios XI)

  4. Convertir un Maildir a un PST

  5. ¿Por qué todavía se usa Unix si Linux se basa en él y Linux es gratuito?

25 libros gratuitos para aprender Linux gratis

Comando de pantalla en Linux explicado

90 comandos de Linux utilizados con frecuencia por los administradores de sistemas de Linux

SystemD - ¿Para qué se utiliza SystemD?

Ejemplos de comandos gratuitos en Linux

¿Cómo mostrar dispositivos usados/espacio libre cuando se usa LVM?