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 |