728x90

들어가기 앞서

본 문서는 MacOS에서 특정 포트가 실행 상태를 확인하고, 해당 포트에서 실행되고 있는 프로세스를 종료하는 방법을 정리합니다.

 

관련 문서

TL;DR

# 8080 포트에서 실행되는 프로세스 및 PID를 확인합니다
$ lsof -i :8080

COMMAND   PID    USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
java    96769 heedong   50u  IPv6 ********      0t0  TCP *:http-alt (LISTEN)

# 해당 프로세스의 아이디(PID)를 이용하여 프로세스를 종료합니다
$ kill -9 96769

 

배경

Description: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that's listening on port 8080 or configure this application to listen on another port.

8080포트가 사용 중이다

 

 

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

 

예전 작성글에 Windows에서 명령 프롬프트(CMD)를 통해 특정 포트 검색 및 프로세스 종료 방법에 대해 정리를 한 적이 있어서 이번에 MacOS를 기준으로 정리하고자 한다.

 

특정 포트 검색 (lsof -i :{PORT})

lsof -i :{PORT 번호}

 

예를 들어 8080번 포트를 검색하고 싶은 경우 아래와 같이 명령어를 실행한다.

$ lsof -i :8080

COMMAND   PID    USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
java    97510 heedong   50u  IPv6 ********      0t0  TCP *:http-alt (LISTEN)

 

명령어를 실행하는 경우 해당 포트를 점유하고 있는 프로세스의 아이디(PID)를 확인할 수 있다.

 

프로세스 종료 (kill -9 {PID})

kill -9 {PID}
왜 -9 를 붙이는가?
- kill 명령어는 Linux 시그널 번호를 활용하여 이벤트를 전달합니다.
- 이 때 사용하는 9는 SIGKILL을 의미하여, 실행 중인 프로세스를 강제로 종료하는 신호입니다.

 

 

방금 전에 확인한 8080번 포트를 점유하고 있는 프로세스의 아이디인 97510 프로세스를 종료하고 싶다면 아래와 같이 명령어를 실행한다.

kill -9 97510

 

해당 포트를 점유하고 있던 프로세스가 종료되었는지 확인하기 위해서는 위의 '특정 포트 검색'에서 실행했던 lsof 명령어를 한 번 더 실행해서 정상적으로 프로세스가 종료되었는지 확인할 수 있다.

728x90
728x90

들어가기 앞서

본 문서는 Windows에서 특정 포트가 실행 상태를 확인하고, 해당 포트에서 실행되고 있는 프로세스를 종료하는 방법을 정리합니다.

 

관련 문서

TL;DR

# 현재 실행되는 프로세스 및 PID를 확인합니다
$ netstat -ano

# 특정 포트(e.g. 8080)만 확인하고 싶은 경우 find 명령어를 함께 사용한다
$ netstat -ano | find "8080"

# 해당 프로세스의 아이디(PID)를 이용하여 프로세스를 종료합니다
$ taskkill /f /pid 22644

 

배경

3000번 포트가 현재 사용 중이다

 

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

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

 

특정 포트 검색 (netstat -ano)

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

 

특정 포트 종료 (taskkill /f /pid [PID])

  • PID를 확인했다면 taskkill 명령어를 통해 종료시킬 수 있다.
  • 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"이 포함된 부분만 출력된다.
728x90

+ Recent posts