`du -s .` 및`du -hs .`는 다른 결과를 제공합니다 (OS X에서)


12

유무에 따른 차이 -h는 사람이 읽을 수있는 단위 여야합니다.

글쎄요 ...

$ du -s .
74216696    .
$ du -hs .
 35G    .

아니면 내가 잘못 생각하고 결과 du -s .가 KB가 아닌가?


3
를 사용해보십시오 du --block-size=1024 -s .. 아마 당신의 BLOCK_SIZE설정은512
Echoes_86

6
(OSX) 매뉴얼 페이지에서 : "BLOCKSIZE를 설정하지 않고 -k 옵션을 지정하지 않으면 블록 카운트가 512 바이트 블록으로 표시됩니다"
user4556274

파일 시스템이 실제로 4096 바이트 블록 인 경우에는 도움이되지 않습니다.
DopeGhoti

따라서 크기를 바이트 단위로 가질 수있는 방법이 없습니까? -h방금 1024로 나누고 일부 단위를 추가하고 있다고 생각했습니다.
Creak

2
echo "74216696*512" | bc그리고 출력은 37998948352입니다. 그렇습니다 -h. 1024 이상으로 나누어서 사람이 읽을 수있는 형태로 변환합니다. 내가받은 것은 35.3887이었습니다 du. 바이트 단위의 크기는을 사용하십시오 --block-size=1. 리눅스에는 -b옵션이 있지만 OS X에 익숙하지 않습니다du
Sergiy Kolodyazhnyy

답변:


23

du출력 형식 지정자가 없으면 킬로바이트가 아닌 512 바이트 블록 의 디스크 사용량을 제공합니다 . 대신 옵션 을 사용하여 킬로바이트로 표시 할 수 있습니다 . OS X (또는 macOS, MacOS 또는 Macos 중 원하는 방식)에서 환경 변수를 설정하여 기본 단위를 사용자 정의 할 수 있습니다 (이는 다른 명령에도 영향을 미침).-kBLOCKSIZE


1
몰랐어요 ... 블록 수에 관심이 있습니까? 디스크에서 크기에 대해 이야기 할 때 한 사람이 블록을 사용하는 것을 본 적이 없습니다 ...
Creak

2
블록은 파일 시스템의 원자 단위입니다. 모든 파일은 디스크의 전체 블록을 소비합니다. 블록은 실제 데이터로 일부만 채워질 수 있지만 전체 블록이 파일에 할당됩니다. 대부분의 사람들의 일상적인 사용은 백분율을 사용하지 않고 의미가 아닌 다른 블록에 대해서는 신경 쓰지 않습니다. 그러나 낮은 수준의 유틸리티 (예를 들면 fdisk, df그리고 du그 그들이 내부적으로 계산하는 단위이기 때문에) 블록 작업은 다른 지시가없는 한.
DopeGhoti

1
@Creak 사실, 대답의 그 부분은 잘못되었습니다. 단위는 파일 시스템의 블록 크기가 아닙니다. du"block" 과 같은 전형적인 Unix 명령의 목적 상 "block"은 512 바이트를 의미합니다. 참조 파일의 블록 크기를 - 통계와 LS의 차이 , 블록 크기 및 클러스터 크기의 차이
질 'SO-정지 존재 악마'

3
"모든 파일은 디스크의 전체 블록을 소비합니다." 파일 시스템이 테일 패킹을 사용하지 않는 한 일반적으로 그렇습니다 . 그러나 그렇습니다. 블록은 파일 시스템의 기본 단위입니다 (실제 블록 크기는 반드시 사용되는 블록 크기와 반드시 일치 할 필요는 없습니다 du.) :)
Wildcard

3

문제는 du512 바이트 블록 수로 크기 를 반환 한다는 것 입니다.

크기를 KB -k단위로 유지하려면 대신 1024 바이트 블록을 사용 하는 옵션을 사용할 수 있습니다 .

$ du -ks .                            
43351596    .
$ du -khs .
 41G    .
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.