Tips

윈도우(Windows)에서 특정 포트 검색 및 종료 (netstat, taskkill, find)

동누크 2022. 12. 26. 16:16

개발 도중 사용하고 있던 특정 포트가 종료되지 않아 다시 명령어를 입력했을 때 에러가 발생하는 경우를 한 번씩 겪는다.
(ex. node:3000, django:8080, tomcat:8080)

이번 기회에 윈도우에서 명령 프롬프트(CMD)를 통해 특정 포트가 열려있는지 검색하고 해당 포트를 죽이는 명령어에 대해서 정리하고자 한다.

 

특정 포트 검색 (netstat -ano)

  • 기본 명령어는 netstat 이다.
  • 그런데 이렇게 해서는 우리가 원하는 특정 포트가 현재 사용되고 있는지와 taskkill(특정 포트 종료 명령어)을 사용하기 위해서 알아야 할 pid가 나오지 정확히 나오지 않기 때문에 netstat 명령어에 옵션을 붙여준다.
  • 다양한 옵션에 대한 설명은 netstat help를 통해 알 수 있다.
  • 우리는 netstat -ano를 실행한다.
    - -a : 모든 연결 포트 표시
    - -n : 주소와 포트 번호를 숫자 형식으로 표시
    - -o : 프로세스 ID (PID) 표시
    - 로컬에서 개발 중이었다면 굳이 n 옵션은 사용하지 않아도 포트는 확인할 수 있다.
  • 우리가 현재 우리가 찾을려는 포트는 3000번 포트이다.
  • 3000번 포트를 사용하고 있는 프로세스의 PID는 22644임을 확인할 수 있다.

특정 포트 죽이기 (taskkill /f /pid [PID])

  • PID를 확인했다면 taskkill 명령어를 통해 종료시킬 수 있다.
  • taskkill 명령어 또한 다양한 옵션을 가지고 있다. 다양한 옵션에 대해 알고 싶다면 taskkill /?를 통해 확인해보자
  • 우리는 taskkill /f /pid [PID]를 통해 특정 포트를 종료하도록 한다.
    - /f : 강제 종료
    - /pid [PID] : 종료할 프로세스의 PID 지정
  • 우리는 pid가 22644인 프로세스를 종료하고자 했기 때문에 taskkill /f /pid 22644를 통해 3000번을 사용하고 있는 프로세스를 종료한다.
  • 다시 netstat -ano를 통해 현재 연결 포트를 확인해보자
  • 3000번 포트가 말끔히 종료되었다.
  • 다시 node를 실행해보면 잘 실행된다.

추가 (find)

  • 우리는 특정 포트를 확인할 때 netstat -ano를 통해 포트를 확인했다.
  • 사실 이건 비효율적인 명령이다.
  • find 명령어와 함께 사용하면 손쉽게 특정 포트를 확인할 수 있다.
  • netstat -ano | find "3306"과 같이 명령어를 실행하면 다음과 같이 netstat -ano의 출력 결과 중 "3306"이 포함된 부분만 출력된다.