lsof(LiSt Open Files)는 「누가 무슨 파일을 열고 있나」 보는 강력한 도구.
「리눅스에서 모든 것은 파일」 철학상 파일·디렉토리·소켓·디바이스 모두 포함.
기본.
lsof — 전체 열린 파일(매우 많음, 거의 grep과 함께).
lsof | wc -l로 개수 확인하면 수만 개 일반.
특정 파일 누가.
lsof /var/log/syslog — 그 파일을 어느 프로세스가 열고 있나.
「umount 못 함, busy」 같은 상황 — lsof /mnt로 거기 쓰는 프로세스 식별 후 종료.
특정 프로세스 — 무엇을.
lsof -p 1234 — PID 1234가 연 모든 파일.
「프로세스가 어떤 파일·소켓 사용하나」 디버깅에 유용.
네트워크 소켓.
lsof -i — 모든 네트워크 연결.
lsof -i :80 — 80 포트 누가.
lsof -i tcp — TCP만.
ss·netstat 대신 사용 가능.
「누가 이 포트 점유하고 있어 내가 못 listen」 같은 흔한 문제 해결.
한 줄 요약
lsof는 열린 파일 목록(파일·소켓·디바이스 모두).
lsof /path로 누가, lsof -p PID로 무엇을, lsof -i :port로 포트 점유.
busy 디바이스·포트 충돌 디버깅에 강력.
더 알아볼 것
- lsof +D dir로 디렉토리 재귀
- fuser — lsof 비슷한 가벼운 도구
- prlimit — 프로세스 한계