개발자
Mac에서 포트가 이미 사용 중인 경우
TCP 포트와 주소에서 수신 대기할 수 있는 프로세스는 하나뿐입니다. 두 번째 서버는 “address already in use” 오류와 함께 중단됩니다.
증상
- 개발 서버가 “EADDRINUSE” 또는 “address already in use” 오류와 함께 중단됩니다.
- “port is already allocated” 오류로 Docker가 포트를 공개할 수 없습니다.
- 편집기가 충돌하거나 재시동되기 전에는 포트가 비어 있었습니다.
가능한 원인
- 이전에 실행한 서버. 이전에 실행한 서버가 아직 백그라운드에서 실행 중입니다.
- 다른 앱. 다른 앱이 같은 포트를 사용합니다. macOS 12 이상에서는 AirPlay 수신기가 포트 5000과 7000을 사용합니다.
- 컨테이너. 실행 중인 컨테이너가 Mac에서 같은 포트를 공개합니다.
확인 방법
포트에서 수신 중인 프로세스를 찾습니다. 3000을 해당 포트 번호로 바꾸세요.
lsof -nP -iTCP:3000 -sTCP:LISTEN출력 COMMAND 및 PID 열에 프로세스가 표시됩니다.
다른 사용자의 프로세스를 보려면 sudo로 같은 명령을 실행하세요.
sudo lsof -nP -iTCP:3000 -sTCP:LISTEN관리자 암호가 필요합니다.
프로세스에 대한 자세한 정보를 표시합니다.
ps -p 12345 -o pid,command해당 포트를 공개하는 컨테이너를 찾으세요.
docker ps
해결 방법
직접 실행한 프로세스라면 해당 터미널 윈도우에서 Control-C로 중단하세요.
그렇지 않으면 PID를 사용해 종료 신호를 보냅니다.
kill 12345중단되지 않으면
kill -9을 사용하세요. 프로세스가 데이터를 저장할 수 없습니다.프로세스가 macOS에 속하면 중지하지 마세요. 서버에 다른 포트를 선택하세요.
포트가 5000 또는 7000이면 Mac에서 포트 5000 또는 7000이 사용 중인 경우: AirPlay 수신기를 참고하세요.
Kilobat 사용
한 프로세스의 열린 소켓을 나열합니다.
kilobat destinations --pid 12345PID로 프로세스를 종료합니다. 중단되지 않는 경우에만
--force을 추가하세요.kilobat quit 12345
질문
포트가 사용 중인데 lsof에 아무것도 표시되지 않는 이유는 무엇인가요?
lsof는 살펴볼 권한이 있는 프로세스만 표시합니다. 모든 프로세스를 보려면 sudo로 실행하세요.
-n과 -P는 어떤 기능을 하나요?
lsof가 주소를 이름으로, 포트를 서비스 이름으로 변환하지 않도록 합니다. 출력이 빨라지고 숫자로 표시됩니다.
출처
- lsof(8), macOS 27.2와 함께 설치된 매뉴얼 페이지
- kill(1) 및 ps(1), macOS 27.2에 설치된 매뉴얼 페이지
- Apple 지원: Apple 소프트웨어 제품이 사용하는 TCP 및 UDP 포트
2026년 10월 29일 확인했습니다.