
He buscado muchas veces y no encontré 1K-blocks
significado en el comando df (gnu), pero lo calculé y creo que es igual a 1K Byte
. ¿Hay una explicación oficial?
Entonces, ¿cómo calcular el Used Percentage
?
Por ejemplo:
tankywoo@gentoo-jl::~/ » df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 15G 5.9G 8.2G 42% /
tankywoo@gentoo-jl::~/ » df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 15481840 6163320 8532088 42% /
En mi máquina local, sé que hay reserved space
.
El usado es 6163320, el disponible es 8532088, entonces:
Creo Used%
que debería ser (15481840-8532088)/15481740 = 44,88%, no 42%.
Entonces, ¿cómo obtener el resultado 42%
?
Respuesta1
El bloque de 1K en GNU coreutils df(1) significa 1024 bytes. Confirmado echando un vistazo rápido a GNU coreutils, versión 8.13, código fuente:
964 if (human_output_opts == -1)
965 {
966 if (posix_format)
967 {
968 human_output_opts = 0;
969 output_block_size = (getenv ("POSIXLY_CORRECT") ? 512 : 1024);
970 }
971 else
972 human_options (getenv ("DF_BLOCK_SIZE"),
973 &human_output_opts, &output_block_size);
974 }
Como puede ver, el tamaño del bloque de salida predeterminado es 1024, a menos que POSIXLY_CORRECT
se establezca una variable de entorno.
Al calcular el porcentaje utilizado, df(1) resta el espacio/bloques reservados para el usuario root del espacio disponible, cuando el sistema de archivos subyacente admite espacios/bloques reservados (la mayoría lo hace):
529 if (known_value (total) && known_value (available_to_root))
530 {
531 used = total - available_to_root;
532 negate_used = (total < available_to_root);
533 }
En resumen, la autoridad oficial en este y en todos los casos es el código fuente.