포트번호로 실행 중인 애플리케이션을 조회하고 프로세스를 종료하기

Intellij로 서버를 실행한 채로 오래 놔두다가 IDE를 종료하면, 백그라운드에서 여전히 포트번호가 선점되어 있는 경우가 있다.

개발자는 당연히 Intellij를 종료했으므로 실행된 서버도 종료되었을 것이라 믿고 동일한 포트번호의 애플리케이션을 실행할 수 있는데, 이 경우 아래와 같은 에러와 마주치게 된다.

org.springframework.boot.web.server.PortInUseException: Port 8080 is already in use

만약 동을 포트를 사용하는 다른 애플리케이션을 실행 중이지 않은 것 같은데 위와 같은 에러가 발생한다면, IDE에서는 종료되었으나 실제 프로세스는 실행 중이기 때문일 수 있다.

8080 포트로 실행 중인 프로세스를 조회해보자.

lsof -n -i -P | grep 8080
  • lsof 현재 실행 중인 프로세스 확인
  • -n 호스트 네임 제거
  • -i IPv4, IPv6 선택
  • -P 포트 이름 제거

아마 아래처럼 검색된 결과가 있을 것이다.

java      56204 gongchaewon   51u  IPv6 0x9b75fccef79f8527      0t0  TCP *:8080 (LISTEN)

56204를 죽여야 한다. kill 명령어로 프로세스를 종료한다.

kill -9 56204

Reference

https://deeplify.dev/back-end/spring/port-is-already-in-use