List Open Files — 그리고 소켓 / 디바이스 / 전부
lsof 가 어느 프로세스가 어떤 파일 열고 있는지 표시. Unix 에선 모든 게 파일 (네트워크 소켓, tty, 파이프) 이라 lsof 가 '8080 잡고 있는 게 뭐?', '누가 이 디스크 열어서 unmount 안 돼?' 류 질문에 답.
일상 레시피
lsof -i :8080— 8080 listen 또는 연결.lsof -i TCP:LISTEN— 모든 TCP listener.lsof -nP -iTCP -sTCP:LISTEN— 숫자 IP/포트 (DNS 안 함, 빠름).lsof /Volumes/Backup— 그 볼륨 잡고 있는 거.lsof -p PID— 프로세스가 들고 있는 모든 fd.lsof -u $USER— 본인 사용자의 파일.lsof | grep deleted— unlink 됐지만 open 상태인 파일 ('지웠는데 디스크 full' 의 주범).
고전 사건들
- 포트 이미 사용 중.
lsof -i :3000으로 PID 확인 → 죽은 dev 서버 kill. - unmount 안 됨.
lsof /Volumes/Disk로 누가 잡고 있는지 → 닫기. - df 는 full, du 는 작음.
lsof | grep deleted가 unlink 된 파일 잡은 프로세스 찾기 → 재시작 시 해제.
모던 대안
Linux 의 ss 가 lsof -i 의 많은 부분 대체. macOS 는 여전히 lsof. 어쨌든 alias: alias ports='lsof -nP -iTCP -sTCP:LISTEN' 로 ports 가 '뭐 listen 중?' 의 한 단어 답.