df의 1K 블록은 무엇이며 사용 비율을 계산하는 방법은 무엇입니까?

df의 1K 블록은 무엇이며 사용 비율을 계산하는 방법은 무엇입니까?

df 명령(gnu)에서 많은 검색을 수행했지만 1K-blocks의미를 찾지 못했지만 계산한 결과 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이고 Avail은 8532088이므로 다음과 같습니다.

Used%(15481840-8532088)/15481740 = 42%가 아니라 44.88%가 되어야 한다고 생각합니다 .

그러면 결과를 얻는 방법은 무엇입니까 42%?

답변1

GNU coreutils df(1)의 1K 블록은 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     }

보시다시피 환경 변수가 POSIXLY_CORRECT설정되지 않은 경우 기본 출력 블록 크기는 1024입니다.

사용된 비율을 계산할 때 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     }

요약하자면, 이 모든 경우의 공식적인 권한은 소스 코드입니다.

관련 정보