·터미널 명령어

lsof

프로세스·시스템

쓰는 꼴

lsof -i :<port>

열려 있는 파일과 소켓을 모두 늘어놓아 "3000번 포트를 누가 쥐고 있나"에 답합니다 — sudo 없이는 내 프로세스만 보이니, 빈 결과가 포트가 비었다는 뜻은 아닙니다.

자주 쓰는 옵션

옵션
-i :3000Which process holds port 3000, in either direction.
-i TCP -sTCP:LISTENListening TCP sockets only.
-tPrint bare PIDs, made for piping into kill.
-p <pid>Everything one process has open.
-u <user>One user's open files.
+D <dir>Every open file underneath a directory, recursively.
-n -PSkip host and port name lookups, which makes it much faster.

예시

lsof -i :3000

The classic answer to "something is already using port 3000".

kill -9 $(lsof -ti :3000)

Kill whatever holds that port.

sudo lsof +D /var/log

Find the process keeping a deleted log file open.

무엇이 돌고 있고 무엇이 자원을 먹는지 봅니다. 죽이기 전에 무엇인지 확인하는 것이 순서입니다.

읽는 방법

  • 대괄호 [ ]는 넣어도 되고 안 넣어도 되는 자리입니다.
  • 점 셋 …은 여러 개를 이어 쓸 수 있다는 뜻입니다.
  • 옵션은 대소문자를 가립니다 — -r과 -R이 다른 명령도 있습니다.

자주 묻는 것

Q. lsof은 무엇을 하나요?

열려 있는 파일과 소켓을 모두 늘어놓아 "3000번 포트를 누가 쥐고 있나"에 답합니다 — sudo 없이는 내 프로세스만 보이니, 빈 결과가 포트가 비었다는 뜻은 아닙니다.

Q. 어떻게 치나요?

lsof -i :<port> — 대괄호는 생략할 수 있는 자리입니다.

Q. 옵션은 몇 개나 자주 쓰나요?

여기 정리한 것은 7개입니다. 전체 목록은 man lsof에 있습니다. 이 명령은 프로세스·시스템 갈래입니다.

같이 보는 명령

man 페이지: man lsof