프로세스를 kill하는 방법 (Windows)

개발노트/기타

2022. 8. 1. 23:39


개발한 앱을 실행하려는데

"이미 포트를 사용하고 있다"며 Exception을 내는 경우가 있다.

Java 진영의 경우 대표적인 Exception은 다음과 같다.

java.net.BindException: Address already in use: bind

 

Spring의 경우 다음과 같은 에러가 나기도 한다.

***************************
APPLICATION FAILED TO START
***************************

Description:

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

 

물론 다른 예외가 있을 수도 있으나

이미 포트를 사용하고 있다는 예외 집단은

아마 다음과 같은 해결책으로도 충분할 것이다.

 

이번 포스트에서는 Windows를 기준으로 작성하려 한다.

cmd(명령 프롬프트)를 실행시키자.

 


 

1. netstat

 

다음과 같이 입력한다.

netstat -ano | find "8080"

 

8080 포트를 이미 사용중인 프로세스를 찾는 경우에 이렇게 입력해주면 된다.

 

필자의 경우 다음과 같이

8080 포트를 사용하는 프로세스의 ID(PID)가 6388인 것을 파악하였다.

 

이제 이 6388 프로세스를 죽여줘야 한다.

 

2. taskkill

 

다음과 같이 입력한다.

taskkill /PID 6388 /F

 

이렇게 하고 성공알림이 뜬다면 해결된 것이다.

 


 

왜 이런 일이 벌어졌을까?

 

필자의 경우에는

이전 앱을 종료(terminate)가 아닌 연결해제(disconnect)를 했었기 때문이었다.

다른 비슷한 경우에도 이와 같이 해결해줘야할 것 같다.