이란 무엇입니까 total
의 출력은 ls -l
?
$ ls -l /etc
total 3344
-rw-r--r-- 1 root root 15276 Oct 5 2004 a2ps.cfg
-rw-r--r-- 1 root root 2562 Oct 5 2004 a2ps-site.cfg
drwxr-xr-x 4 root root 4096 Feb 2 2007 acpi
-rw-r--r-- 1 root root 48 Feb 8 2008 adjtime
drwxr-xr-x 4 root root 4096 Feb 2 2007 alchemist
답변
해당 ls
플랫폼 의 설명서 에서 해당 라인의 정의를 찾을 수 있습니다 . 들어 coreutils
ls
(리눅스 시스템의 많은에있는 하나), 정보를 통해 찾을 수 있습니다 info coreutils ls
:
나열된 각 디렉토리에 대해`total BLOCKS ‘줄이있는 파일을 앞에 두십시오. 여기서 BLOCKS는 해당 디렉토리의 모든 파일에 대한 총 디스크 할당입니다.
답변
공식 : 그 숫자 는 무엇입니까 ?
total int = 각 파일에 대한 (physical_blocks_in_use) * physical_block_size / ls_block_size)의 합 .
어디:
ls_block_size
인 임의의 환경 변수 자유롭게 수정할 수있다 (일반적으로 512 또는 1024 바이트)
--block-size=<int>
의 플래그ls
1,POSIXLY_CORRECT=1
GNU 환경 변수, 또는 (512 바이트 단위에 도착)-k
1KB 단위를 강제 플래그.physical_block_size
내부 블록 인터페이스의 OS 종속 값으로 기본 하드웨어에 연결되거나 연결되지 않을 수 있습니다. 이 값은 일반적으로 512b 또는 1k이지만 OS에 전적으로 의존합니다. 또는 의%B
값을 통해 공개 할 수 있습니다 . 이 값은 (거의 항상) 최신 저장 장치 의 물리적 블록 수와 관련이 없습니다 .stat
fstat
왜 그렇게 혼란 스러운가?
이 수치는 물리적 또는 의미있는 지표와 상당히 분리되어 있습니다. 많은 주니어 프로그래머들은 파일 홀 이나 하드 / 심볼 링크에 대한 경험이 없었습니다 . 또한이 특정 주제에 대한 문서는 사실상 존재하지 않습니다.
“블록 크기” 라는 용어의 불일치와 모호함은 수많은 다른 측정이 쉽게 혼동되고 디스크 액세스를 중심으로 비교적 깊은 추상화 수준으로 인해 발생했습니다.
상충되는 정보의 예 : du
(또는 ls -s
) vsstat
du *
프로젝트 폴더에서 실행 하면 다음이 생성됩니다. (참고 : ls -s
동일한 결과를 반환합니다.)
dactyl:~/p% du *
2 check.cc
2 check.h
1 DONE
3 Makefile
3 memory.cc
5 memory.h
26 p2
4 p2.cc
2 stack.cc
14 stack.h
합계 : 2 + 2 + 1 + 3 + 3 + 5 + 26 + 4 + 2 + 14 = 62 블록
그러나 하나가 실행되면 stat
다른 값 세트가 나타납니다. stat
동일한 디렉토리에서 실행 하면 다음이 발생합니다.
dactyl:~/p% stat * --printf="%b\t(%B)\t%n: %s bytes\n"
3 (512) check.cc: 221 bytes
3 (512) check.h: 221 bytes
1 (512) DONE: 0 bytes
5 (512) Makefile: 980 bytes
6 (512) memory.cc: 2069 bytes
10 (512) memory.h: 4219 bytes
51 (512) p2: 24884 bytes
8 (512) p2.cc: 2586 bytes
3 (512) stack.cc: 334 bytes
28 (512) stack.h: 13028 bytes
합계 : 3 + 3 + 1 + 5 + 6 + 10 + 51 + 8 + 3 + 28 = 118 블록
참고 :
stat * --printf="%b\t(%B)\t%n: %s bytes\n"
> 명령을 사용하여 위에 표시된 대로 블록 수, 블록 크기, 파일 이름 및 바이트 크기를 순서대로 출력 할 수 있습니다 .
테이크 아웃에는 두 가지 중요한 사항이 있습니다.
stat
리포트 모두physical_blocks_in_use
와physical_block_size
상기 화학식에서 사용. 이는 OS 인터페이스를 기반으로 한 값입니다.du
물리적 디스크 사용률의 상당히 정확한 추정치 로 일반적으로 수용되는 것을 제공합니다 .
참고로, ls -l
위의 디렉토리 는 다음 과 같습니다.
dactyl:~/p% ls -l
**total 59**
-rw-r--r--. 1 dhs217 grad 221 Oct 16 2013 check.cc
-rw-r--r--. 1 dhs217 grad 221 Oct 16 2013 check.h
-rw-r--r--. 1 dhs217 grad 0 Oct 16 2013 DONE
-rw-r--r--. 1 dhs217 grad 980 Oct 16 2013 Makefile
-rw-r--r--. 1 dhs217 grad 2069 Oct 16 2013 memory.cc
-rw-r--r--. 1 dhs217 grad 4219 Oct 16 2013 memory.h
-rwxr-xr-x. 1 dhs217 grad 24884 Oct 18 2013 p2
-rw-r--r--. 1 dhs217 grad 2586 Oct 16 2013 p2.cc
-rw-r--r--. 1 dhs217 grad 334 Oct 16 2013 stack.cc
-rw-r--r--. 1 dhs217 grad 13028 Oct 16 2013 stack.h
답변
나열된 파일이 사용하는 간접 블록을 포함한 총 파일 시스템 블록 수입니다. ls -s
동일한 파일에서 실행 하고보고 된 숫자를 합하면 같은 숫자를 얻게됩니다.
답변
-h (ls -lh)를 사용하여 사람이 읽을 수있는 형식으로 변환 할 수 있습니다.