3

Я искал много и не нашел 1K-blocks значении команды df (gnu), но я рассчитал и думаю, что он равен 1K Byte? Есть ли официальное объяснение?

Тогда как рассчитать Used Percentage?

Например:

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% /

Я знаю, что на моем локальном компьютере есть reserved space .

Используется 6163320, доступно 8532088, поэтому:

Я думаю, что Used% должен быть (15481840-8532088)/15481740 = 44,88%, а не 42%.

Так как получить результат 42%?

1 ответ1

2

Блок 1K в GNU coreutils df(1) означает 1024 байта. Подтверждение этого - быстрый взгляд на GNU coreutils, версия 8.13, исходный код:

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     }

Как видите, размер выходного блока по умолчанию равен 1024, если не установлена переменная POSIXLY_CORRECT .

При расчете используемого процента df(1) вычитает зарезервированное пространство / блоки для корневого пользователя из доступного пространства, когда базовая файловая система поддерживает зарезервированное пространство / блоки (большинство из них):

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     }

Подводя итог, официальный орган в этом и каждом случае является исходным кодом.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .