C.W.K.
Stream
Lesson 07 of 13 · published

lsof -i

~12 min · lsof, ports, process, eaddrinuse

Level 0Pinger
0 XP0/101 lessons0/12 achievements
0/150 XP to next level150 XP to go0% complete

"port already in use" 의 정답

lsof -i 가 어느 프로세스가 어느 네트워크 포트 쓰는지 — 프로그램 이름, PID, user 포함 — 알려줌. macOS 에선 netstat 가 프로세스 정보 안 보여줘서 이게 go-to. Linux 에선 ss -tulnp 가 대략 등가.

영원히 쓸 한 줄

Dev server 가 "EADDRINUSE :::3000" 으로 실패하면 사이클:

  1. lsof -i :3000 — 뭐가 포트 쥐고 있어?
  2. PID 메모.
  3. kill PID(또는 정중한 요청 무시하면 kill -9 PID).

또는 한 번에 — lsof -ti :3000 | xargs kill -9. -t 가 PID 만 출력, kill 에 pipe 적합.

Code

lsof -i 레시피·bash
# What's running on port 8000?
lsof -i :8000

# All network connections, numeric ports (faster, less DNS)
lsof -i -P -n

# Just listeners
lsof -i -P -n | grep LISTEN

# The one-liner — kill whatever's on :3000
lsof -ti :3000 | xargs kill -9

# Connections of a specific process
lsof -i -P -n | grep node

# All connections to a specific remote host
lsof -i @192.168.1.100
EADDRINUSE walk-through·bash
# Your dev server fails:
#   Error: listen EADDRINUSE: address already in use :::3000

# Find the culprit
lsof -i :3000
# COMMAND   PID  USER   FD   TYPE  DEVICE  NAME
# node    12345  you_username 22u  IPv6  0x...   *:3000 (LISTEN)

# Kill it
kill 12345

# Or if it's stuck:
kill -9 12345

# Verify
lsof -i :3000   # should be empty

External links

Exercise

빠른 server 시작 — python3 -m http.server 8080 &. 그다음 lsof -i :8080 돌려서 PID 식별. 한 줄 lsof -ti :8080 | xargs kill -9 로 종료. lsof -i :8080 으로 확인 (비어 있어야). 이 사이클이 1 년에 수백 번 할 일.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.