Web/기타

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

  • -

처음 웹 프로그램을 하다보면 tomcat을 사용하면서 자주 접하는 오류가 바로 8080 포트를 다른 녀석이 점유하고 있어서 tomcat을 실행할 수 없다는 내용이다. 

문제의 원인은 기존에 떠있던 tomcat이 좀비처럼 8080 포트에서 버티고 서있기 때문에 새로운 tomcat 서버가 실행하지 못하는 문제이기 때문에 기존의 tomcat을 종료하고 실행하면 되는 간단한 문제이다. 

이번 포스트에서는 프로세스를 죽이는 2가지 방법에 대해서 살펴보자.

 

프로세스 죽이기

 

작업관리자 확용

먼저 작업 관리자에서 해당 작업을 끝내줄 수 있다.

window 기준으로 [ctrl]+[alt]+[del]을 입력해서 작업 관리자로 이동 후 세부 정보에서 java.exe인 작업의 pic를 확인하고 하단의 작업 끝내기 버튼을 이용해서 작업을 끝내면 된다.

pid 확인!! 그런데 누가 톰켓이냐??

하지만 이 작업은 해당 프로세스가 어떤 포트를 사용하는지 알수 없기 때문에 자칫 다른 작업을 끝내버리는 불상사가 발생할 수 있다.(여기서는 PID 18440 번이 톰켓이다.)

 

명령 프롬프트 활용

다음은 가장 확실한 방법인 명령 프롬프트를 활용하는 것이다.

먼저 명령 프롬프트를 열어서 아래의 명령으로 8080 포트를 사용하는 prosses의 id(PID)를 확인한다.

C:\Users\itsme>netstat -ano | findstr 8080
  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       18440
  TCP    [::]:8080              [::]:0                 LISTENING       18440

 

이제 죽여야할 프로세스의 PID 정보(맨 우측의 숫자)를 알았으니 가차없이 죽이면 된다.

C:\Users\itsme>taskkill /f /pid 18440
성공: 프로세스(PID 18440)가 종료되었습니다.

 

HOOXY 명령을 실행할 권한이 없다고 이야기한다면 명령 프롬프트를 관리자로 열어서 실행한다. 

 

 

맥을 사용한다구요?

맥에서도 lsof(list of file) 명령어로 위 동작을 처리할 수 있다.

# 현재 동작중인 process 정보 중 LISTEN을 포함하고 있는 process 조회
sudo lsof -Pi | grep LISTEN

quietjun@quietjun hello_vue % sudo lsof -Pi | grep LISTEN
Microsoft  1837       quietjun   19u  ~~    TCP localhost:9222 (LISTEN)
node      13124       quietjun   26u  ~~    TCP localhost:3000 (LISTEN)
node      13173       quietjun   26u  ~~    TCP localhost:3001 (LISTEN)

 

# 특정 포트(3000)를 사용중인 process 조회
sudo lsof -Pi :3000 | grep LISTEN
node      13124 quietjun   26u  ~~ TCP localhost:3000 (LISTEN)

 

# 조회된 PID(13124 - 위 결과의 2번째 컬럼)를 이용해서 process를 종료시킨다.
sudo kill -9 13124
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.