김 컴퓨터


lsof (List Open Files)

lsof현재 시스템에서 열려 있는 모든 파일의 목록을 보여주는 명령어입니다. 리눅스에서는 일반 파일뿐만 아니라 디렉터리, 라이브러리, 네트워크 소켓, 파이프 등 모든 것을 파일로 취급하기 때문에, 시스템 모니터링 및 트러블슈팅 시 매우 강력한 도구로 사용됩니다.


1. 기본 사용법

lsof [옵션]

2. 주요 옵션

옵션 이름 설명
-u user 특정 사용자가 열고 있는 파일들만 보여줍니다.
-p PID 특정 프로세스 ID가 사용 중인 파일들을 보여줍니다.
-i internet 네트워크 소켓 정보를 보여줍니다. (포트 확인 시 유용)
-c command 특정 명령어(프로세스 이름)와 관련된 파일들을 보여줍니다.
+D directory 특정 디렉터리 내의 파일을 사용 중인 프로세스를 찾습니다.
-t terse 상세 정보 없이 PID만 출력합니다. (스크립트 활용 시 유용)

3. 실무 활용 예시

① 특정 포트를 사용 중인 프로세스 찾기 (가장 많이 쓰임)

8080 포트가 왜 이미 사용 중인지 확인할 때 유용합니다.

sudo lsof -i :8080

② 특정 파일이나 폴더를 사용 중인 프로세스 확인

USB를 추출하려는데 "사용 중"이라며 거부될 때 범인을 찾을 수 있습니다.

lsof +D /media/usb_drive

③ 특정 사용자가 실행한 네트워크 연결만 보기

lsof -u kim -i

④ 특정 프로세스가 열고 있는 파일들 확인

lsof -p 1234

4. [팁] FD와 TYPE 컬럼 읽기

lsof 결과에서 눈여겨봐야 할 부분입니다. * FD (File Descriptor): cwd(현재작업디렉터리), txt(프로그램코드), 0(표준입력), 1(표준출력), 2(표준에러) 등. * TYPE: REG(일반파일), DIR(디렉터리), IPv4(네트워크), FIFO(파이프) 등.