
Pesquisei muitas e não encontrei 1K-blocks
significado no comando df (gnu), mas calculei e acho que é igual a 1K Byte
? Existe uma explicação oficial?
Então como calcular o Used Percentage
?
Por exemplo:
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% /
Na minha máquina local, eu sei que existe reserved space
.
Usado é 6163320, Disponível é 8532088, então:
Acho Used%
que deveria ser (15481840-8532088)/15481740 = 44,88%, não 42%.
Então, como obter o resultado 42%
?
Responder1
O bloco de 1K no GNU coreutils df(1) significa 1024 bytes. Confirmado dando uma olhada rápida no GNU coreutils, versão 8.13, código-fonte:
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 você pode ver, o tamanho padrão do bloco de saída é 1024, a menos que a variável de ambiente POSIXLY_CORRECT
seja definida.
Ao calcular a porcentagem usada, df(1) subtrai espaços/blocos reservados para o usuário root do espaço disponível, quando o sistema de arquivos subjacente suporta espaços/blocos reservados (a maioria faz):
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 }
Resumindo, a autoridade oficial neste e em todos os casos é o código-fonte.