Linux

lsof

studioesso 2026. 1. 19. 16:39

list open files

현재 시스템에 열려 있는 모든 파일의 목록을 보여준다.

 

리눅스는 일반 파일뿐만 아니라 디렉토리, 디바이스, 프로세스, 소켓 등 모든 것이 파일로 표현된다.

따라서 해당 명령을 이용해서 특정 파일을 점유중인 프로세스를 체크하거나, 특정 포트를 어떤 프로세스가 사용중인지 확인하는 것이 가능하다.

 

Column 값 설명

COMMAND : 파일을 열고 있는 실행 프로그램 이름

PID : 프로세스 ID

TID : Task ID(=Thread ID)

TASKCMD : 스레드 이름

USER : 파일을 연 사용자

FD : File Descriptor, 프로세스가 어떤 용도, 어떤 권한으로 열었는지

  • 숫자r : 읽기 전용 (숫자는 파일 디스크립터 번호)
  • 숫자w : 쓰기 전용
  • 숫자u : 읽기 쓰기 둘다 가능
  • cwd : current working directory, 프로세스가 현재 작업중인 디렉토리
  • rtd : root directory, 프로세스의 루트 디렉토리
  • txt : 실행 중인 프로그램의 실제 코드 (바이너리 파일)
  • mem : 메모리 맵 파일
  • mmap : 메모리에 매핑된 장치
  • pd : parent directory, 부모 디렉토리

TYPE : 파일 종류

  • REG : 일반 파일
  • DIR : 디렉토리
  • IPv4 : 네트워크

DEVICE : 장치 번호

SIZE/OFF : 파일 크기/오프셋(프로세스가 파일을 읽거나 쓰고 있는 현재 위치, byte)

NODE : 아이노드 번호

NAME : 파일의 전체 경로 또는 네트워크 주소

 

사용 예

lsof | grep deleted

출력 결과에 (deleted)가 있으면 프로세스가 해당 파일을 아직 붙잡고 있는 상태이다.

평소에 로그가 자동으로 정리가 되도 어느 순간 disk full로 이슈가 발생할 수 있는데,

그럴 때 해당 명령어로 확인해보면 deleted 상태 일 수 있다. 프로세스를 죽이거나 재시작해야 실제 디스크 공간이 확보된다.

 

lsof -i :port

어떤 ip 주소의 사용자가 해당 포트에 연결중인지 확인

 

lsof -i tcp

TCP 연결중인 프로세스 출력

 

lsof -i :ssh

:service 사용 중인 프로세스 출력

 

lsof -i -n -P | grep ESTABLISHED

현재 연결된 모든 네트워크 세션 확인

-i : 인터넷 소켓 파일만 보기

-n :  ip  주소를 호스트명으로 변환하지 않음. (속도가 빠름)

-P : 포트 번호를 서비스 이름으로 치환하지 않고 숫자 그대로 표시

'Linux' 카테고리의 다른 글

dmesg  (1) 2026.01.15
VFS (Virtual File System)  (0) 2026.01.07
tcpdump  (0) 2026.01.06
strace  (0) 2026.01.05
ss (Socket Statistics)  (1) 2026.01.02