Port 8080 was already in use.

hwarye·2022년 12월 26일
0

Trouble Shooting

목록 보기
1/11

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

이 에러메세지와 함께 스프링이 실행되지 않을 때!
-> 다른 곳에서 이미 8080포트를 쓰고 있어서 돌아가지 않는 것이다.

구글링 해보면 보통 2가지 방법을 이야기한다.

1) run할 프로젝트의 포트번호 바꾸기
resources의 application.properties 파일에서 다른 포트 번호로 변경하기
=> server.port={설정할 다른 포트 번호}

2) 8080 포트를 쓰고 있는 서버 죽이기
=> netstat -ano
를 입력하면 실행 중인 프로그램들의 목록이 나온다. 거기서 8080을 쓰고 있는 프로그램의 PID를 찾아 kill해주면 된다.
=> tastkill/pid {pid번호}/f

나는 굳이 2개의 프로그램을 돌릴 필요가 없기 때문에 기존의 8080 포트를 쓰고 있는 프로그램을 죽이고 8080으로 새로 돌리는 방법을 택했다.

그런데! 2번째 방법인 netstat -ano가 안먹혔다.

=> 그도 그럴 것이 netstat -anowindows 해결방식_이었다.


⭐️ Mac에서는 ⭐️

터미널에 lsof -i tcp:{찾을 포트 번호} 입력하여
해당 포트를 사용중인 프로그램의 PID를 찾아
kill -9 PID명 을 입력해 서버를 죽이면 된다.

1) 해당 포트번호 사용 중인 프로그램의 PID 찾기

lsof -i tcp:{찾을 포트 번호} or
lsof -n -i :{찾을 포트 번호} | grep LISTEN or
sudo lsof -i tcp:{찾을 포트 번호} or
sudo lsof -n -i :{찾을 포트 번호} | grep LISTEN

2) 서버 죽이기

kill -9 PID명 or
kill -15 PID명 or
sudo kill -9 PID명 or
sudo kill -15 PID명 or


ex)


sudo lsof -n -i :{찾을 포트 번호} | grep LISTEN + kill -15 PID명


lsof -i tcp:{찾을 포트 번호} + kill -9 PID명


sudo는 관리자 권한으로 명령어를 실행하는 것인데
확인 결과 sudo 를 작성하지 않아도 수행하고자 하는 명령은 수행되니 sudo를 굳이 작성하지 않아도 될 것 같다.
sudo로 명령어를 실행할 경우 비밀번호까지 입력해야 하는 수고로움이 생기는데 그 번거로움을 덜 수 있다.

profile
례코드

0개의 댓글