들어가기 앞서
본 문서는 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.
개발 도중 사용하고 있던 특정 포트가 종료되지 않아 다시 명령어를 입력했을 때 에러가 발생하는 경우를 한 번씩 겪는다.
(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 명령어를 한 번 더 실행해서 정상적으로 프로세스가 종료되었는지 확인할 수 있다.
'Tip & 잡기술' 카테고리의 다른 글
윈도우(Windows)에서 특정 포트 검색 및 종료하기 (netstat, taskkill, find) (0) | 2022.12.26 |
---|