티스토리 뷰

이클립스로 스프링 프로젝트 진행할 땐 따로 서버 중지를 하지 않고 종료해도 이클립스가 알아서 포트를 비워주기 때문에 별 신경을 안써서 IntelliJ에서도 그렇게 적용되는줄 알았다. 종료하고 다음날 어플리케이션을 가동하려는데 아무 문제없이 

가동되던것이 콘솔창에 

Web server failed to start. Port 8080 was already in use.

이미 사용중이라고 나온다.어제까지 이 포트번호로 가동했던 프로젝트가 갑자기 포트번호를 이미 사용중이라고 나오길래 이게 무슨말인가 싶어서 열심히 구글링 해본결과 IntelliJ만 종료해서는 포트가 자동으로 해제가 안되는 특징 때문이였다. 때문에 반드시 가동중인 서버를 멈추고 종료해야 포트를 계속 잡아먹는 문제가 생기지 않는다.

서버 가동을 멈추지 않고 종료했다면 프로젝트가 사용중인 포트를 수동으로 제거해주고 재가동을 시켜주면 된다.

netstat -ano | findstr {port number}
ex) netstat -ano | findstr 12000

1. 윈도우 환경에서 cmd창을 띄우고 위의 코드를 적어주면 된다. 프로젝트가 8010포트를 사용중이라면

netstat -ano | findstr 8010

 을 입력해주면 

 

맨 마지막 열에 PID가 나오는데

taskkill /f /pid 106308
//윈도우 cmd터미널 명령어
taskkill -f -pid 106308
//윈도우 gitBash터미널 명령어

이라고 입력하면 해당 PID의 포트를 종료시키겠다는 의미이다.

2. 다음은 맥os나 리눅스 터미널에서 종료하는 방법이다.

lsof를 통해서 포트번호 기반으로 프로세스를 찾아 kill을 하면된다.

lsof 는 list open files 의 약자로 시스템에서 열린 (사용중인) 파일 (프로세스등 포함) 목록을 알려주는 명령어이다.

lsof -i :포트번호
  • -i
    • 특정 포트를 사용하는 프로세스 정보 보기 옵션
    • 만약 포트 범위를 지정해서 보고 싶다면 -를 사용
    • ex) lsof -i :8080-9090

이외에도 다양한 옵션으로 프로세스를 확인할 수 있다.
다음은 주로 사용되는 lsof 옵션들이다.

  • -c
    • java, httpd 등 특정 명령어가 실행한 오픈한 프로세스들이 출력
    • ex) lsof -c httpd
  • -t
    • 다른 정보는 제외하고 pid 만 출력
  • -u
    • 특정 사용자가 오픈한 프로세스들 출력

이렇게 찾아낸 프로세스 정보 중 원하는 프로세스의 pid 를 kill 하면 정상적으로 종료가 된다.

kill pid

한번에 쉽게 하려면 두 명령어를 합쳐서 진행할 수 있다.

kill $(lsof -t -i:8080)

그러면 기존에 떠있던 프로젝트가 정상적으로 종료되어 재실행이 문제 없음을 확인할 수 있다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함