리눅스 포트 번호로 특정 프로세스 죽이기

Dec 19, 2017


특정 포트를 사용중인 프로세스를 죽이려면 fuser를 사용하면 된다.

fuser 사용법

info fuser

20001 번 포트를 사용중인 프로세스를 죽일 경우

fuser -k 20001/tcp

주로 사내 개발서버에서 내부용 관리도구를 개발하는데 Spring legacy프로젝트 일경우엔 Tomcat에 WAR로 배포했고, 그때는 그냥 톰캣 webapp에 집어 넣고 알아서 배포하게 했었다. 그러다가 SpringBoot를 자주 사용하면서 WAR보단 jar로 패키징해서 간단하게 배포했다. 간단한 유틸성 프로그램일 경우에 jenkins로 관리하는게 오히려 거추장스러워서 직접 ftp로 올려서 실행, 종료 했는데 jar로 패키징 했을 경우에 종료는

  1. 포트 검색으로 프로세스 아이디 가져오기
netstat -tnlp|grep 20001
  • 여기서 20001 이 찾고자 하는 포트번호
  1. 해당 프로세스 죽이기
kill -9 1234
  • 1234가 1번 과정을 통해 찾은 PID(프로세스 아이디)

이런식으로 작성했는데, 매번 두번씩 shell을 입력하는게 귀찮았다. 그래서 “음? 그러면 두개를 하나로 붙이면 좋겠다!” 라고 생각했다. gawk를 사용해서 netstat의 결과에서 프로세스를 가져온 후 kill 명령어에 넘겨줬다.

kill -9 `netstat -tnlp|grep 20001|gawk '{ print $7 }'|grep -o '[0-9]*'`

뿌듯한 마음에 shutdown.sh 이란 이름도 붙여줘서 한동안 잘 사용했는데 최근 리눅스 명령어를 공부하다가 fuser를 알게 되었고 내 사랑스러운 shutdown.sh은 은퇴했다.