본문 바로가기

트러블슈팅

8080 port is already used. Port 사용하는 PID 찾아서 Kill 하기

문제

애플리케이션을 실행시키는데 '8080 port is already used' 라는 에러가 났다.

문제 원인

다른 애플리케이션을 실행시키고 있는 게 없었기 때문에, 8080 port를 어디서 사용해야되는 지 알아야 했다.

 

아래 명령어를 터미널에 입력해서, 현재 열린 포트 목록과 PID를 확인했다.

PID는 참고로 운영체제에서 사용하는 Process의 ID이다. 

sudo lsof -PiTCP -sTCP:LISTEN

-- 실행 결과
COMMAND     PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
java        524 root   43u  IPv6 0xf228382879241e9d      0t0  TCP *:49195 (LISTEN)
java        524 root   45u  IPv6 0xf228382879240f9d      0t0  TCP *:8080 (LISTEN)
java        524 root   64u  IPv6 0xf228382879242d9d      0t0  TCP *:2181 (LISTEN)
AnySign.e   525 root    9u  IPv4 0xf228382d468c3b05      0t0  TCP localhost:31026 (LISTEN)
AnySign.e   525 root   13u  IPv4 0xf228382d468c5c35      0t0  TCP localhost:31027 (LISTEN)

 

아래 명령어를 입력하면 8080 포트를 사용하는 PID만 확인할 수 있다.

sudo lsof -i :8080

-- 실행 결과
COMMAND PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
java    524 root   45u  IPv6 0xf228382879240f9d      0t0  TCP *:http-alt (LISTEN)

 

아래 명령어를 입력하면 프로세스 실행 명령어를 알려준다.

8080 포트로 실행중인 PID가 524이므로, ps 524를 실행시켜 주었다.

--ps 프로세스ID
ps 524

-- 실행 결과
  PID   TT  STAT      TIME COMMAND
  524   ??  Ss     0:03.27 /opt/homebrew/opt/openjdk/bin/java -Dzookeeper.log.dir=/opt/homebrew/Cellar/zook

 

실행 명령어를 보니 Zookeeper가 8080 포트를 사용하고 있음을 확인할 수 있었다.

문제 해결

우선, Zookeeper를 사용하는 프로세스를 종료시키는 것으로 문제를 해결하려 하였다.

아래 명령어를 입력하면, PID로 process를 종료시킬 수 있다.

-- sudo kill -9 PID
sudo kill -9 524

 

다시 열려있는 포트 목록을 확인하였는데, zookeeper가 재실행되는 것을 확인하였다.

sudo lsof -PiTCP -sTCP:LISTEN

-- 실행 결과
COMMAND     PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
java      28548 root   45u  IPv6 0xf2283828757aa61d      0t0  TCP *:8080 (LISTEN)

 

PID를 Kill하는 것으로는, 문제를 해결할 수가 없어서, 로컬에 설치했던 kafka와 zookeeper를 모두 삭제하였다.

zookeeper를 kafka에서 사용하고 있기 때문에, kafka부터 삭제하면 된다.

brew uninstall --force kafka
brew uninstall --force zookeeper

 

물론, kafka나 zookeepr를 삭제하지 않고, 애플리케이션의 HTTP port를 변경해주어도 된다.

아니면 zookeeper의 환경 설정에서 사용하는 port를 8080에서 다른 포트로 변경해주어도 된다.

내 경우에 애플리케이션은 8080 포트를 사용하고 싶고, kafka와 zookeeper를 한동안 사용하지 않을 것 같았기에 삭제하였다.

참고 자료

https://velog.io/@taelee/%ED%98%84%EC%9E%AC-%EC%97%B4%EB%A0%A4%EC%9E%88%EB%8A%94-%ED%8F%AC%ED%8A%B8-%ED%99%95%EC%9D%B8mac

 

현재 열려있는 포트 확인 및 닫기(mac)

쉘에서 다음과 같이 치면 된다.sudo lsof -PiTCP -sTCP:LISTEN출처: stackExchange

velog.io

 

https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_PID%EB%A1%9C_%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4_%EC%9D%B4%EB%A6%84_%ED%99%95%EC%9D%B8

 

리눅스 PID로 프로세스 이름 확인 - 제타위키

 

zetawiki.com