개인기록

[MacOS] 서버 강제 종료 후 Port 8080 was already in use 에러 해결 본문

Spring Boot

[MacOS] 서버 강제 종료 후 Port 8080 was already in use 에러 해결

jenn.dph 2021. 12. 3. 21:57

터미널에서 gradlew로 서버를 빌드하고 실행한 뒤에 아무 생각 없이 ctrl + Z 로 서버를 종료했다(고 생각했다).

그런데 다시 서버를 구동하려니까 이런 오류가 떴다.

 

Web server failed to start. Port 8080 was already in use.

 

분명히 서버를 종료했는데 8080 포트가 이미 사용중이라니? 하고 생각해 보니 내가 한 건 강제 종료였다.

정상적이지 않은 방법으로 서버를 종료해서 뭔가 문제가 생긴 것 같았다.

 

 

그래서 현재 8080 포트에 연결된 프로세스를 찾아서 종료시키려고 터미널에 sudo lsof -i :8080를 입력해 주었다.

8080 위치가 포트 번호이고, 다른 포트를 사용하고 있다면 뒤의 숫자만 변경해 주면 된다. 

% sudo lsof -i :8080

그러면 현재 8080 포트에 연결된 프로세스가 출력된다.

COMMAND    PID      USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
java      2540 [username]   11u  IPv6 0x8df238261a2bed19      0t0  TCP *:http-alt (LISTEN)
java      2540 [username]   16u  IPv6 0x8df238261a2c17f9      0t0  TCP localhost:http-alt->localhost:53293 (ESTABLISHED)
java      2540 [username]   17u  IPv6 0x8df238261a2c2439      0t0  TCP localhost:http-alt->localhost:53294 (CLOSE_WAIT)

 

PID가 2540인 저 프로세스가 제대로 종료되지 않고 현재 8080 포트를 사용중이므로 kill 명령어를 사용해서 포트를 닫아 주자.

% sudo kill -9 2540

그러면 서버가 정상적으로 잘 종료된 것을 확인할 수 있다.

 

 

* 서버 종료는 ctrl + Z가 아니라 ctrl + C로 하자. *