본문 바로가기

Etc..

Kill Process: Windows 에서 살아있는 포트 찾아서 강제로 죽이기

출처 : http://miconblog.com/archives/1251


간혹 이클립스로 개발하다보면 어쩔수없이 강제 종료를 하게되는데, 이때 이클립스 플러그인으로 톰캣을 연동해 사용하다 강제 종료 했다면,톰캣 포트가 죽지않아 강제로 죽여야 하는 상황에 놓이게 된다.

유닉스나 리눅스면 netstat 또는 ps 와 같은 명령어로 PID를 찾고 kill 명령어로 해당 PID 를 찾아 죽일수 있으나, Windows는 당췌 알수없어, 매번 구글링을 하게 된다. 이젠 이 구글링 하는것도 귀찮아 정리해야겠다. ㅇㅎㅎ

열린 포트의 PID 확인하기

netstat -ao

위의 명령어를 사용하면, 아래와 같은 형식으로 출력된다.
Proto  Local Address Foreign Addresss  State       PID
TCP 나의-컴퓨터:10000 somewhere.com     LISTENING   666

죽이고 싶은 포트가 10000번 이었는데,.. 10000번 포트를 차지하고 있는 프로세스는 666 이구나!!

프로세스 강제 종료하기

netstat는 리눅스나 윈도우즈나 동일한데 맥에서는 PID가 보이질 않는다. 그래서 맥은 lsof 라는 명령어를 써야하는데 뒤에서 얘기하기로 하고, 아무튼 일단 프로세스를 죽이는 kill 명령어는 윈도우즈용 명령어에는 없다. 윈도우즈 전용은 taskkill 을 사용한다.

taskkill /F /PID 666

위와 같이 강제종료 옵션 /F 와 같이 사용하면, 죽이지 못할 프로세스가 없다!! 유후!!

맥에서 PID 얻기

맥에서는 netstat 명령을 아무리 입력해도 PID가 보이지 않는다. 이럴땐 lsof를 이용하자.

lsof -iTCP

위와 같이 입력하면 아래와 같이 나온다.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Finder 347 realrap 5u IPv4 0xc21f4cc42ae141cd 0t0 TCP localhost:49520->localhost:26164
Finder 347 realrap 7u IPv4 0xc21f4cc42ae141cd 0t0 TCP localhost:49520->localhost:26164

아래와 같이 입력하면 포트번호만 필터링 할수도 있다.

lsof -iTCP:35729