du 명령어 사용법

파일과 디렉터리가 사용하는 디스크 공간을 확인하는 명령어입니다.

파일·디렉터리 관리연결 실습 문제 3개Rocky Linux 8 기준 · 실행 결과는 실습 컨테이너에서 확인

기본 문법

du [옵션] [파일 또는 디렉터리...]

du(disk usage)는 지정한 디렉터리와 그 하위 항목이 차지하는 디스크 공간을 계산해 출력하는 명령어입니다. 아무 옵션 없이 실행하면 하위 디렉터리마다 누적 용량을 한 줄씩 보여 주고, 마지막 줄에 지정한 경로의 총합이 나옵니다. 기본 단위는 1KB 블록이며, -h 로 사람이 읽기 쉬운 단위(K, M, G)로 바꿀 수 있습니다.

실무에서는 디스크가 가득 찼을 때 원인을 찾는 데 자주 사용합니다. df 로 파티션 전체의 사용률을 확인한 뒤, du 로 어느 디렉터리가 공간을 많이 쓰는지 좁혀 나가는 순서가 일반적입니다. 로그 디렉터리나 백업 디렉터리처럼 시간이 지나며 커지는 경로를 점검할 때 유용합니다.

옵션은 -sh 처럼 묶어서 쓸 수 있습니다. 이는 -s 와 -h 를 함께 지정한 것과 같으며, 별도의 옵션이 아닙니다.

리눅스마스터·LPIC 등 자격시험에서는 du 와 df 의 차이, -s(합계만)와 -h(읽기 쉬운 단위) 옵션의 의미를 묻는 문제가 나옵니다. 셸 스크립트에서 임계치를 검사할 때는 단위가 고정된 du -sm 이나 du -sk 를 써서 숫자만 뽑아 비교하는 방식이 일반적입니다.

자주 쓰는 옵션

옵션의미
-h, --human-readableK, M, G 등 사람이 읽기 쉬운 단위로 출력du -h /var/log
-s, --summarize하위 목록 없이 지정한 경로의 합계만 출력du -s /home/exercise
-m1MB(1048576바이트) 단위로 출력(--block-size=1M 과 동일)du -sm /home/exercise/storage
-k1KB 단위로 출력(기본값과 동일)du -sk /tmp
-a, --all디렉터리뿐 아니라 개별 파일 용량도 모두 출력du -a /tmp/demo
-c, --total마지막에 total 합계 줄을 추가로 출력du -ch /tmp/demo/a /tmp/demo/b
-d N, --max-depth=NN 단계 깊이까지만 출력(깊은 트리 요약에 사용)du -h --max-depth=1 /var
--apparent-size블록 할당량이 아닌 파일의 논리적 크기로 계산du -sh --apparent-size /tmp/demo
--exclude=패턴패턴에 맞는 파일·디렉터리를 계산에서 제외du -sh --exclude='*.log' /tmp/demo
-x, --one-file-system다른 파일 시스템으로 넘어가지 않고 현재 파일 시스템만 계산du -sh -x /

실무 예시

디렉터리 총 용량 확인

준비: mkdir -p /tmp/demo/storage; dd if=/dev/zero of=/tmp/demo/storage/big.bin bs=1M count=5 2>/dev/null

$ du -sh /tmp/demo/storage
5.0M	/tmp/demo/storage

지정한 디렉터리 전체가 쓰는 용량을 한 줄 요약으로 보여 줍니다. 하위 목록이 필요 없을 때 쓰는 형태입니다.

하위 디렉터리별 용량 나열

준비: mkdir -p /tmp/demo/lab/backup /tmp/demo/lab/app /tmp/demo/lab/cache; dd if=/dev/zero of=/tmp/demo/lab/backup/b.bin bs=1M count=6 2>/dev/null; dd if=/dev/zero of=/tmp/demo/lab/app/a.bin bs=1M count=3 2>/dev/null; dd if=/dev/zero of=/tmp/demo/lab/cache/c.bin bs=1M count=1 2>/dev/null

$ du -h --max-depth=1 /tmp/demo/lab
6.0M	/tmp/demo/lab/backup
3.0M	/tmp/demo/lab/app
1.0M	/tmp/demo/lab/cache
10M	/tmp/demo/lab

바로 아래 단계 디렉터리별 용량과 지정 경로의 합계를 확인합니다. 어느 디렉터리가 공간을 많이 쓰는지 좁혀 갈 때 씁니다.

크기순으로 정렬해 보기

준비: 앞 예시에서 만든 /tmp/demo/lab 구조를 그대로 사용합니다.

$ du -sm /tmp/demo/lab/backup /tmp/demo/lab/app /tmp/demo/lab/cache | sort -rn
bash: line 1: $'\354\225\236': command not found
6	/tmp/demo/lab/backup
3	/tmp/demo/lab/app
1	/tmp/demo/lab/cache

단위를 MB로 고정하면 숫자가 한 가지 단위로 나오므로 sort -rn 으로 큰 것부터 정렬할 수 있습니다. 러닉스 158번 문제와 같은 형태입니다.

개별 파일 용량까지 보기

준비: 앞 예시에서 만든 /tmp/demo/lab 구조를 그대로 사용합니다.

$ du -ah /tmp/demo/lab
bash: line 1: $'\354\225\236': command not found
6.0M	/tmp/demo/lab/backup/b.bin
6.0M	/tmp/demo/lab/backup
3.0M	/tmp/demo/lab/app/a.bin
3.0M	/tmp/demo/lab/app
1.0M	/tmp/demo/lab/cache/c.bin
1.0M	/tmp/demo/lab/cache
10M	/tmp/demo/lab

-a 를 붙이면 디렉터리뿐 아니라 파일 하나하나의 용량도 출력됩니다. 어떤 파일이 용량을 차지하는지 확인할 때 유용합니다.

임계치 초과 여부 검사

준비: 앞 예시에서 만든 /tmp/demo/lab 구조를 그대로 사용합니다.

$ SIZE=$(du -sm /tmp/demo/lab | cut -f1); [ "$SIZE" -gt 5 ] && echo "WARN: ${SIZE}MB" || echo "OK: ${SIZE}MB"
bash: line 1: $'\354\225\236': command not found
WARN: 10MB

du -sm 의 첫 필드만 잘라내 숫자로 비교합니다. 디스크 사용량 경고 스크립트(러닉스 226번)의 기본 골격입니다.

주의할 점

  • du 는 실제 할당된 블록 수를 세므로 ls -l 로 본 파일 크기 합계와 다를 수 있습니다. 논리 크기는 --apparent-size 를 씁니다.
  • -h 출력은 K/M/G 가 섞여 있어 sort -rn 으로 정렬하면 틀립니다. 정렬에는 sort -h 를 쓰거나, 비교·계산에는 -sm, -sk 로 단위를 고정하세요.
  • 일반 사용자로 /var 등을 훑으면 권한 없는 디렉터리에서 오류가 나고 합계가 실제보다 작게 나옵니다.
  • 삭제된 파일을 프로세스가 붙잡고 있으면 du 합계와 df 사용량이 어긋납니다. 파티션 전체 사용률은 df 로 확인하세요.
  • du 결과를 근거로 파일을 지울 때는 먼저 경로와 대상을 확인하고, 삭제 전 목록을 출력해 검토하세요. 시스템 디렉터리나 서비스가 사용 중인 파일을 임의로 지우면 복구가 어려울 수 있습니다.

이 명령어로 풀 수 있는 실습 문제

브라우저 웹 터미널에서 바로 풀고 요구사항별로 자동 채점됩니다. 로그인 없이 5분 체험도 가능합니다.

관련 명령어

마지막 검수 2026-09-16 · 내용에 오류가 있으면 문제 페이지의 질문 기능으로 알려 주세요.