df -h로 전체 파일 시스템 용량 및 마운트 지점 파악.du -sh * 명령어로 현재 폴더 내에서 누가 용량을 가장 많이 먹는지 범인 색출./var/log 폴더 용량 분석해보기.
"디스크에 빈 공간(Free)이 얼마나 남았니?"
"이 파일/폴더가 디스크를 얼마나 사용(Usage)하고 있는가?"
df는 전체 용량을 확인하고,du는 폴더별 용량을 확인할 때 씁니다.
라즈베리 파이가 "No space left on device" 에러를 뱉은 상황
df).1. 전체 용량 확인 (가독성 좋게)
Bash
df -h
h (Human): 바이트 단위 대신 GB, MB로 보여줌.Use%가 100%에 가까운 파티션이 어딘지 확인 (보통 / 또는 /var).
2. 아이노드(Inode) 고갈 확인
Bash
df -i

df로 확인하니 /가 99%일때, 용량을 잡아먹는 파일을 찾는 법
du).1. 현재 폴더의 1단계 하위 용량만 보기 (필수 명령어)
그냥 du 치면 화면이 폭발한다. 딱 1단계 깊이만 봐야 합니다.
시간 오래걸림→ 검색하려는 폴더 선택 잘하세요.
du -h --max-depth=1 | sort -hr
# 또는 짧게
du -h -d 1 | sort -hr
d 1: 깊이(Depth)를 1로 제한.sort -hr: 용량 큰 순서대로 정렬 (Human readable, Reverse)./var가 10GB네? -> cd /var -> 다시 du 실행 -> /var/log가 범인이네? (추적 과정).
서로 같은 결과가 나오는 것을 알 수 있다.
2. 특정 파일 하나만 볼 때
Bash
du -sh my_build_folder/
s (Summary): 주절주절 안 나오고 합계만 딱 보여줌.
상황: rm big_log.log로 10GB짜리 로그를 지웠음. 근데 df -h는 여전히 100%라고 함.
원인: 어떤 프로세스가 그 파일을 아직 잡고(Open) 있어서 실제로 삭제가 안 된 상태. (du에서는 안 보이고 df에서는 보임).
해결: 잡고 있는 놈 찾아서 죽이기.
Bash
# 삭제되었지만(deleted) 열려있는 파일 찾기
lsof | grep deleted
python3, rsyslogd)를 재시작(systemctl restart ...)하거나 죽이면 용량이 즉시 확보됨.
"List Open Files. '누가 이 파일을(또는 포트를) 붙잡고 있냐?'를 따지는 탐정 도구."
리눅스에서는 "모든 것이 파일(Everything is a file)"입니다. 하드디스크 파일뿐만 아니라, 네트워크 포트, 디바이스, 파이프까지 전부 파일로 취급합니다. 그래서 lsof 하나면 시스템의 모든 연결 상태를 볼 수 있습니다.
서버를 띄우려는데 Address already in use 에러가 날 때, 범인을 찾습니다.
Bash
# 8080 포트를 쓰고 있는 프로세스 찾기
sudo lsof -i :8080
PID를 알려줍니다. kill -9 [PID]로 죽이면 해결됩니다.
umount 하려는데 "Target is busy"라고 나올 때, 누가 그 폴더에 들어가 있는지 찾습니다.
Bash
# /mnt/usb 를 잡고 있는 범인 찾기
sudo lsof /mnt/usb

cd로 들어가 있는 경우가 많습니다.아까 df/du 질문에서 언급했던, '지워졌지만(Deleted) 프로세스가 잡고 있는 파일'을 찾을 때 씁니다.
Bash
sudo lsof | grep deleted

p)내가 만든 프로그램(PID 1234)이 엉뚱한 로그 파일을 쓰고 있는지, 라이브러리는 뭘 로딩했는지 궁금할 때.
Bash
lsof -p 1234

u)pi 계정이 실행한 모든 걸 보고 싶을 때.
Bash
lsof -u pi
sudo)lsof는 내 권한으로 볼 수 있는 것만 보여줍니다.
시스템 전체(다른 사용자나 시스템 데몬)를 보려면 반드시 sudo lsof ... 라고 쳐야 정확합니다.
둘 다 진짜 하드디스크(SD카드)가 아닌
가상의 공간
tmpfs (Temporary File System)/run: 실행 중인 프로세스 ID(PID) 파일이나 소켓 파일 저장. (재부팅하면 어차피 필요 없으니까)./dev/shm: 프로그램끼리 고속으로 데이터를 주고받는 '공유 메모리(Shared Memory)' 공간./tmp: (설정에 따라) 임시 파일을 빠르게 쓰고 지울 때.이 위치에 중요한 파일(소스코드, 로그 등)을 저장하면 재부팅 순간 영구 삭제되니 주의

efivarfs (EFI Variable File System)/sys/firmware/efi/efivars에 마운트됩니다.절대 주의 : rm -rf / 같은 걸 실수로 돌렸을 때, 일반 디스크 파일뿐만 아니라 이 efivarfs 안의 파일까지 지워지면 메인보드가 벽돌(Brick)이 될 수 있습니다. (BIOS 설정이 날아가서 부팅 불가가 됨).
최신 리눅스는 이를 방지하기 위해 읽기 전용(ro)으로 보호하거나 immutable 속성을 걸기도 합니다.