본문 바로가기

전산

# 리눅스 lsof 명령어 사용방법: 열린 파일부터 포트 점검까지 완벽 가이드

반응형

목차

  1. lsof란 무엇인가?
  2. lsof 설치 방법
  3. lsof 기본 사용법
  4. 상황별 lsof 명령어 예제
  5. lsof 출력 항목 해석
  6. 프로세스 기반 파일 열람
  7. 포트 및 네트워크 관련 사용법
  8. 고급 옵션 및 필터링
  9. lsof 사용 시 주의사항
  10. FAQ
  11. 맞춤형 요약

1. lsof란 무엇인가?

lsofList Open Files의 줄임말로, 리눅스에서 열려 있는 모든 파일과 해당 파일을 사용하는 프로세스를 확인할 수 있는 명령어입니다.
리눅스에서 "파일"은 단순한 텍스트 파일뿐 아니라 디렉토리, 소켓, 파이프, 디바이스 등도 포함하므로, 시스템 전체의 자원 점검 및 디버깅에 매우 유용합니다.


2. lsof 설치 방법

Ubuntu / Debian 계열

sudo apt install lsof

CentOS / RHEL 계열

sudo yum install lsof

설치 후 lsof 명령어로 정상 동작하는지 확인해보세요.


3. lsof 기본 사용법

lsof [옵션]

전체 열린 파일 보기

lsof

특정 파일을 사용하는 프로세스 확인

lsof /var/log/syslog

특정 PID가 사용하는 파일 보기

lsof -p 1234

4. 상황별 lsof 명령어 예제

4.1 특정 포트를 사용 중인 프로세스 확인 (예: 80번 포트)

lsof -i :80

4.2 특정 유저가 연 파일 보기

lsof -u ubuntu

4.3 특정 디렉토리 안에서 열린 파일 찾기

lsof +D /home/user

4.4 삭제된 파일을 열고 있는 프로세스 찾기

lsof | grep deleted

4.5 특정 프로그램이 열고 있는 파일 찾기

lsof -c apache2

5. lsof 출력 항목 해석

COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx    2312 root   5u   IPv4  12345      0t0  TCP *:http (LISTEN)
항목 설명
COMMAND 실행 중인 프로세스 이름
PID 프로세스 ID
USER 소유자
FD 파일 디스크립터 (u: 읽기/쓰기, r: 읽기 전용, w: 쓰기 전용)
TYPE 파일 타입 (REG, DIR, CHR, IPv4 등)
DEVICE 장치 번호
SIZE/OFF 파일 사이즈 또는 오프셋
NODE 파일의 inode 번호
NAME 열려 있는 파일 이름 또는 포트 정보

6. 프로세스 기반 파일 열람

특정 프로세스가 여는 소켓 확인

lsof -p 1234 | grep IPv

여러 PID 동시 지정

lsof -p 1111,2222

실행 파일 확인

lsof -p 1234 | grep txt

7. 포트 및 네트워크 관련 사용법

현재 리슨 중인 포트 확인

lsof -i -n -P | grep LISTEN

옵션 설명:

  • -i: 네트워크 파일
  • -n: 호스트 이름 대신 IP 표시
  • -P: 포트 번호 그대로 표시

특정 IP에서의 연결 보기

lsof -i @192.168.0.10

특정 포트 프로토콜 지정

lsof -iTCP:443

8. 고급 옵션 및 필터링

옵션 설명
-t PID만 출력 (스크립트에서 유용)
-r 실시간 갱신 (예: lsof -r 2)
-nP DNS와 포트 이름 해석 생략 (속도 개선)
+L1 링크 수가 1 미만인 파일 찾기 (삭제된 파일 포함)

예: PID만 가져와서 kill 하기

kill -9 $(lsof -t -i :3306)

9. lsof 사용 시 주의사항

주의사항 설명
루트 권한 필요 다른 사용자의 프로세스 확인 시 sudo 필수
시스템 리소스 소모 +D 옵션은 디렉토리 하위 전체 검색이므로 느릴 수 있음
삭제된 파일 주의 logrotate 이후 로그파일 누수 문제 탐지 가능
컨테이너 환경 docker 컨테이너 내부에서는 설치 필요

10. FAQ

Q1. lsof는 어떤 상황에서 가장 많이 쓰이나요?

A. 파일 잠금 확인, 열린 포트 및 프로세스 추적, 삭제된 파일 확인, 로그 파일 누수 감지 등에 자주 사용됩니다.

Q2. lsof로 열려 있는 파일을 강제로 닫을 수 있나요?

A. 직접 닫을 수는 없으며, 해당 파일을 사용하는 프로세스를 종료(kill) 해야 합니다.

Q3. 실시간으로 파일 열림 상태를 감시할 수 있나요?

A. watch와 조합하여 실시간 모니터링 가능합니다.
예: watch -n 1 "lsof -i :443"

Q4. lsof와 netstat 또는 ss는 어떤 차이가 있나요?

A. lsof는 파일 기반, netstat/ss는 소켓/네트워크 연결 중심입니다. 상황에 따라 함께 사용하면 좋습니다.


11. 맞춤형 요약

항목 내용
명령어 이름 lsof (List Open Files)
기능 열린 파일 및 리소스를 사용하는 프로세스 확인
주요 사용 사례 포트 사용 확인, 로그 파일 누수, 파일 잠금 진단
설치 패키지 대부분 기본 포함, 없으면 apt 또는 yum으로 설치
대표 옵션 -p, -u, -i, +D, -t, -nP, -c
특징 실시간 분석, 네트워크 포트 추적, 고급 필터링 가능
대상 사용자 시스템 관리자, 보안 담당자, 서버 엔지니어 등
주의사항 루트 권한 필요 시 있음, 리소스 사용 주의
반응형