--- title: lsof — 열린 파일·포트 확인 date: 2026-10-18 time: 12:00 model: admin category: programs author_type: human summary: 프로세스가 잡고 있는 파일·포트·삭제된 파일을 확인하는 도구. 디스크 반환 문제에 필수. tags: 프로그램, 장애 진단 및 복구, lsof --- **💬 "lsof 명령어"** lsof는 **열려 있는 파일과 소켓**을 보여줍니다. 포트 점유와 '지웠는데 용량이 안 줄어드는' 문제를 해결합니다. 특히 `+L1`은 삭제됐지만 프로세스가 잡고 있는 파일을 찾습니다. - **개념**: 프로세스가 연 파일·소켓·장치를 나열합니다. - **파일명**: 해당 프로세스가 사용하는 경로입니다. - **(deleted)**: 지워졌지만 아직 열려 있는 파일입니다. - **FD**: 파일 디스크립터 종류(cwd, txt, 숫자)입니다. ## 자주 쓰는 옵션 | 옵션 | 설명 | | --- | --- | | -p | 특정 프로세스가 연 파일 | | -i :<포트> | 특정 포트를 사용하는 프로세스 | | +L1 | 링크 수가 1 미만(삭제된) 파일 찾기 | | -u <사용자> | 특정 사용자 파일 | ## 필수 명령어 조합 3가지 - `lsof -i :443` — 443 포트를 사용하는 프로세스 확인 - `lsof +L1 | head` — 삭제됐지만 잡혀 있는 파일 확인 - `lsof -p 2210 | head` — 프로세스가 연 파일 확인 **💬 "이 명령어를 써서 시간을 아끼는 방법이 있을까?"** 실제 운영 중인 서버에서 자주 만나는 상황을 순서대로 정리했습니다. ### 1단계 · 포트 점유 확인 어느 프로세스가 포트를 잡았는지 봅니다. ``` lsof -i :443 ``` ### 2단계 · 삭제된 파일 확인 용량이 안 줄어들 때 확인합니다. ``` lsof +L1 | sort -k7 -n | tail ``` ### 3단계 · 재시작 또는 회전 해당 프로세스를 재시작하거나 로그를 회전시켜 반환합니다. ``` systemctl restart myapp ``` ## 실무에서는 이렇게 씁니다 ### 1. 지웠는데 용량 그대로 **상황** — 로그를 rm 했는데 df 수치가 그대로입니다. ``` lsof +L1 | grep -i log ``` **결과** — 프로세스가 잡고 있는 deleted 파일과 PID를 찾습니다. **포인트** — 프로세스를 재시작하면 용량이 반환됩니다. 근본적으로는 logrotate를 씁니다. ### 2. 포트 점유 프로세스 **상황** — 8080을 누가 쓰는지 찾아야 합니다. ``` lsof -i :8080 ``` **결과** — PID와 프로세스 이름이 나와 정리 대상을 특정합니다. **포인트** — ss -lntp로도 같은 정보를 볼 수 있습니다. ## 주의할 점 - 전체 lsof는 출력이 방대합니다. 필터(-i, -p, +L1)를 씁니다. - 타 사용자 파일 정보는 권한이 필요해 sudo가 필요할 수 있습니다. - 삭제된 파일을 잡은 프로세스를 재시작하면 순단이 생길 수 있습니다. ## 실제 실행 화면 삭제됐지만 잡혀 있는 로그 파일과 443 포트 점유 프로세스를 확인한 결과입니다. ![lsof 명령어 실행 결과: 삭제된 파일과 포트 점유](https://games.cursorai.co.kr/assets/lsof-demo.png) 실제 운영 중인 서버 --- 원문(HTML): https://games.cursorai.co.kr/programs/linux/troubleshooting/lsof.html