본문 바로가기

Development/OS

[Windows, MacOS, Linux] 로컬의 사용중인 포트 종료하는 방법

728x90

개발 중 또는 운영 중에 사용하고 있는 애플리케이션을 강제종료행야 할 때가 있습니다.

개발 중에는 자주 서버를 재시작함할때 가끔 포트 충돌로 실행 되지 경우가 있고,

운영 중에는 배포시 가끔씩 종료가 지연되거나 되지 않을 경우가 종종 있기도 합니다.

 

이때 활성화한 애플리케이션(또는 서비스) PID를 찾아서 종료하는 방법을 운영체제 별로 확인해 보도록 하겠습니다.

 

우선 하는 행위는 기본적으로 동일합니다.

  1. 특정 포트가 열려(사용중)인지 확인한다.
  2. 사용중인 PID를 확인한다.
  3. PID를 활용하여 강제 종료한다.

그럼 지금부터 Windows, MacOS, Linux에서 위의 순서를 어떤 명령어로 진행하는지 확인해보세요.

Windows

윈도우의 경우 CMD또는 PowerShell창을 열어 다음 명령어를 입력하여 특정 포트가 사용중인지 확인합니다.

# 형식
netstat -ano [| findstr :PORT]

# 예제
netstat -ano | findstr :8080

 

위 명령어로 실행되는 결과화면입니다. (헤더는 생략될 수 있음)

 프로토콜  로컬 주소              외부 주소              상태            PID
  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       17360
  TCP    [::]:8080              [::]:0                 LISTENING       17360

 

결과화면으로 부터 PID를 확인하고 다음 명령어를 실행합니다.

# 형식
taskkill /f /pid PID

# 예제
taskkill /f /pid 17360

 

다시 netstat를 활용하여 검색해보면 결과화면이 나오지 않을 것입니다.

이는 애플리케이션(서비스)가 종료되었다고 판단하면 됩니다.

 

"netstat -ano" 명령어만 사용할 경우 수많은 프로세스들이 보여져서 찾기가 힘들 수 있습니다.
이때 "findstr" 명령어를 활용하여 필요한 것만 필터해서 사용할 수 있습니다.

 

중요한 점은 윈도우에서 서비스를 종료하는 명령어는 "taskkill" 이라는 점입니다.

정리

netstat -ano | findstr :[PORT(8000)]
taskkill /f /pid [PID(11332)]

MacOS

Terminal 창을 열어서 다음 명령어를 입력하여 포트가 사용중인지 확인합니다.

# 형식
lsof -i :[PORT]

# 예제
lsof -i :8080

 

위 명령어 실행시 다음과 같은 결과화면이 출력됩니다. (헤더는 생략될 수 있음)

COMMAND   PID   USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
java     17360  cozy  156u  IPv6 0xfd06b486a616f0b3      0t0  TCP *:http (LISTEN)

 

결과화면으로 부터 PID를 확인하고 다음 명령어를 실행합니다.

# 형식
kill -9 [PID]

# 예제
kill -9 17360

 

권한이 필요할 경우는 kill 명령어 앞에 sudo와 함게 사용합니다. 

sudo kill -9 [PID]

 

다시 제일 처음 명령어를 입력하시면 결과화면은 나오지 않을 것입니다.

결과화면이 나오지 않으면 애플리케이션(서비스)가 종료되었음을 알 수 있습니다.

정리

lsof -i :[PORT]
kill -9 [PID]

Linux

GUI일 경우 terminal을 열어주시고 ssh 원격일 경우 terminal 상태이므로 다음 명령어를 실행하여 특정 포트가 사용중에 있는지 확인합니다.

# 형식
netstat -tnlp | grep [PORT]

# 예제
netstat -tnlp | grep 8080

 

다음과 같은 결과화면을 볼 수 있습니다. (헤더는 생략될 수 있음)

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp6       0      0 :::8080                 :::*                    LISTEN      25197/java

 

결과화면으로부터 PID를 확인한 이후 kill 명령어로 해당 애플리케이션(서비스 or 프로세서)를 종료합니다.

# 형식
kill -9 [PID]

# 예제
kill -9 17360

 

권한이 필요하다면 kill 명령어 앞에 sudo를 붙혀 root 권한으로 실행합니다.

sudo kill -9 [PID]

 

다시 열린 포트를 확인하여 검색결과에 이전과 같은 목록이 나오지 않는다면 종료된 것이라 판단합니다.

정리

netstat -tnlp | grep [PORT]
kill -9 [PID]

 

어느 OS든지 프로세서(서비스)를 강제 종료하는 명령어는 알아두는 것이 좋습니다.

만약 강제 종료하는 명령어를 몰라 OS를 재부팅하는 행위는 안하셨으면 하는 바램이 공유합니다.

 

 

728x90
반응형