| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
- 텍스트
- 커널패닉
- disown
- 심볼릭링크
- nohup
- 권한상승
- 코드블럭
- remove
- 상대경로
- du
- 하드링크
- 모니터링
- xargs
- sed
- su
- printworkingdirectory
- 리눅스
- pkill
- 스트림에디터
- 명령어
- 턱스
- pwd
- CodeBlock
- mkdir
- IT
- bg
- chown
- Linux
- command
- Tux
- Today
- Total
Snow flake
[command] df, du 명령어 본문
서버를 운영하다 보면 "디스크 공간이 얼마나 남았는지", "어떤 디렉토리가 용량을 많이 차지하는지" 확인해야 하는 상황이 자주 생깁니다. 이때 사용하는 명령어가 df와 du입니다. 둘 다 용량을 확인하는 명령어지만, 보는 관점이 다릅니다.
df (Disk Free)
df는 Disk Free의 약자로, 파일 시스템(디스크, 파티션) 단위로 전체 용량과 사용량, 남은 공간을 보여주는 명령어입니다.
# 사용법
df [옵션]
# 전체 파일 시스템 용량 확인
df
# 결과 예시
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 51475068 8234512 40567892 17% /
/dev/sda2 104806400 2345600 97128000 3% /u01
기본 결과는 1K 블록 단위(킬로바이트)로 나와서 숫자가 커 보이고 한눈에 읽기가 어렵습니다. 그래서 실무에서는 아래 옵션을 훨씬 자주 사용합니다.
df 주요 옵션
# -h : 사람이 읽기 쉬운 단위(K, M, G)로 표시 (가장 많이 씀)
df -h
# 결과 예시
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 49G 7.9G 39G 17% /
/dev/sda2 100G 2.3G 93G 3% /u01
# -T : 파일 시스템 종류까지 함께 표시
df -hT
# 특정 디렉토리가 속한 파일 시스템만 확인
df -h /u01/app/oracle
df -h는 사실상 리눅스 디스크 용량 확인의 표준처럼 쓰입니다. Use% 컬럼을 보고 90% 이상이면 위험 신호로 보고 정리 작업에 들어가는 경우가 많습니다.
du (Disk Usage)
du는 Disk Usage의 약자로, 특정 파일이나 디렉토리가 실제로 얼마나 용량을 차지하는지 보여주는 명령어입니다. df가 "파일 시스템 전체" 관점이라면, du는 "이 폴더/파일 하나"의 관점입니다.
# 사용법
du [옵션] [경로]
# 현재 디렉토리 용량 확인 (하위 디렉토리 전부 포함)
du
# 특정 디렉토리 용량 확인
du /home/oracle/logs
옵션 없이 실행하면 하위 디렉토리 하나하나의 용량까지 전부 출력돼서 결과가 너무 길어지는 경우가 많습니다. 실무에서는 아래 옵션으로 필요한 정보만 뽑아서 봅니다.
du 주요 옵션
# -h : 사람이 읽기 쉬운 단위로 표시
du -h /home/oracle/logs
# -s : 하위 디렉토리 세부 내역 없이 합계만 표시
du -sh /home/oracle/logs
# -d 1 (또는 --max-depth=1) : 지정한 깊이까지만 표시
du -h -d 1 /home/oracle
# 결과 예시 (du -h -d 1)
2.1G /home/oracle/logs
850M /home/oracle/backup
120M /home/oracle/scripts
3.1G /home/oracle
du -sh [경로]는 "이 폴더 전체가 총 얼마인지 딱 한 줄로 알고 싶을 때" 가장 많이 쓰는 조합이고, du -h -d 1은 "이 폴더 밑에 있는 하위 폴더들 중 뭐가 용량을 많이 차지하는지" 확인할 때 유용합니다.
df와 du를 함께 쓰는 이유
디스크 공간 부족 문제가 생겼을 때는 보통 df와 du를 순서대로 사용합니다.
# 1단계: 어떤 파일 시스템이 꽉 찼는지 확인
df -h
# 결과에서 /u01 파티션이 95%로 꽉 찬 것을 확인했다고 가정
# 2단계: /u01 밑에서 용량을 많이 차지하는 디렉토리 찾기
du -h -d 1 /u01
# 3단계: 용량이 큰 디렉토리를 더 깊이 파고들기
du -h -d 1 /u01/app/oracle
df로 "어느 파티션이 문제인지"를 먼저 확인하고, du로 "그 안에서 정확히 무엇이 용량을 차지하는지" 좁혀 들어가는 흐름입니다. df만 보면 문제가 있다는 건 알아도 원인을 찾을 수 없고, du만 보면 특정 폴더는 알아도 전체 디스크 상황을 파악할 수 없기 때문에, 이 둘은 항상 짝을 이뤄서 사용됩니다.
흔히 헷갈리는 점: df와 du 결과가 다를 때
가끔 df로 본 사용량과 du로 본 사용량 합계가 맞지 않는 경우가 있습니다. 이는 삭제된 파일을 아직 사용 중인 프로세스가 붙잡고 있을 때 발생하는 현상으로, df는 실제 디스크에서 할당된 블록 기준으로 계산하고 du는 파일 시스템 상에 존재하는 파일 기준으로 계산하기 때문에 생기는 차이입니다.
# 삭제된 파일을 아직 물고 있는 프로세스 찾기
lsof | grep deleted
# 해당 프로세스를 재시작하면 공간이 실제로 회수됨
로그 파일을 rm으로 지웠는데 df상 용량이 그대로인 경우, 대부분 이 케이스에 해당합니다. 실무에서 한 번쯤은 꼭 마주치는 상황이라 알아두면 좋습니다.
실무에서 자주 마주치는 상황
서버 디스크 부족 관제를 받았을 때, 보통 이런 순서로 대응합니다.
# 1단계: 전체 파티션 사용률 확인
df -h
# 2단계: 90% 넘는 파티션 확인 후 원인 디렉토리 찾기
du -h -d 1 /var/log
# 3단계: 특정 로그 파일이 너무 큰 것을 확인
du -h /var/log/messages
# 4단계: 오래된 로그 정리 (find와 조합)
find /var/log -name "*.log" -mtime +30 -exec rm {} \;
# 5단계: 정리 후 다시 확인
df -h
디스크 용량 부족은 서버 장애로 이어질 수 있는 흔한 원인 중 하나라, df/du/find를 조합해서 빠르게 원인을 찾고 정리하는 흐름을 익혀두면 실무에서 큰 도움이 됩니다.
'Programming > Linux' 카테고리의 다른 글
| [command] scp, rsync 명령어 (0) | 2026.09.15 |
|---|---|
| [command] tar, gzip 명령어 (1) | 2026.09.13 |
| [command] ps, kill 명령어 (0) | 2026.09.11 |
| [command] find 명령어 (0) | 2026.09.10 |
| [command] grep 명령어 (0) | 2026.09.09 |
