로컬에서 개발을 진행할때 톰캣을 올리고 내리는일이 빈번하다.
그런데 톰캣을 내릴때... 포트를 물고있는상태에서 정리되지 않는 경우가 빈번하다.
이런경우에는 톰캣을 올렸을때 포트가 이미 점유중이라는 에러메시지가 발생하게 된다..
1) 현재 사용중인 포트와 해당 포트를 점유중인 프로세스의 PID를 전부 표시한다.
해당 명령어로 Tomcat의 PID를 알아낸 후에..
netstat -ano
2) taskkill 명령어로 해당 프로세스를 죽.여.준.다.
애초에 깔끔하게 죽어줬으면 이럴일 없잖아. 톰캣아. 우리 서로 번거로운일은 만들지말자.
taskkill /PID ${tomcat의 PID} /F
예) taskkill /PID 5700 /F
taskkill을 하고나서 바로 톰캣을 올리면 바로 안되는 경우도 있어서.. 잠시 기다린후에 톰캣을 올려봅시다..
(간혹 포트는 물고있지만, taskkill을 실행하면 인스턴스가 없다는 에러가 뜰때가 있습니다..
이경우 Tomcat은 포트를 내리고 있는데, 우리가 너무 성급한거일수도 있습니다.)
bat파일을 만들어서 클릭 한번으로 톰캣 죽이기
이짓을 여러번하면 슬슬 귀찮아집니다. 모든 개발자가 그렇듯, 어떻게하면 일을 편하게할까 궁리하게 됩니다.
배치파일을 만들어서 더블클릭 한번으로 톰캣을 죽여봅시다.
참고코드: https://de.switch-case.com/65542191
.bat파일 만드는법
1) notepad를 열어서.. 아래 배치파일 코드를 적어줍니다.
* killport에는 톰캣 포트번호를 적어보세요.
@ECHO OFF
SET killport=8080
for /f "tokens=5" %%p in ('netstat -aon ^| find /i "listening" ^| find "%killport%"') do taskkill /F /PID %%p
pause
+ 코드설명
token=5 : for문을 돌면서 공백을 기준으로 다섯번째 목록에 위치하는 문자열을 가져옵니다.
netstat -ano 결과를 find로 "listening"하는 목록만을 필터링한후..
그 결과를 8080포트를 가지는 목록만을 가져옵니다.
일치하는 목록을 %%p로 가져와서 taskkill 해줍니다..!
(|가 아닌 ^|를 사용하는 이유는.. for문안이여서 그런듯한데.. 더 찾아봐야 겠다..)
2) 저장 > 모든파일 선택 후 파일명에 tomcatKill.bat 를 적어줍니다.
그리고 문제가 발생할때마다 배치파일을 더블클릭하여 실행해주면 끝!
'Today I learned' 카테고리의 다른 글
[Spring Boot] 봄은 지난지 오래지만 마음만은, 스프링부트. 3일차 (0) | 2019.09.04 |
---|---|
Package Presentation 설정 (0) | 2019.09.04 |
[SQL] 특정 DB owner가 생성한 테이블의 정보 가져오기 (0) | 2019.09.04 |
프로젝트 빌드 혹은 톰캣 기동시 갑자기 에러가 발생할때. (0) | 2019.09.02 |
[Spring Boot] 스프링부트 2일차 (0) | 2019.08.29 |
댓글