이 에러메세지와 함께 스프링이 실행되지 않을 때!
-> 다른 곳에서 이미 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 -ano
는 windows 해결방식_이었다.
터미널에
lsof -i tcp:{찾을 포트 번호}
입력하여
해당 포트를 사용중인 프로그램의 PID를 찾아
kill -9 PID명
을 입력해 서버를 죽이면 된다.
lsof -i tcp:{찾을 포트 번호}
or
lsof -n -i :{찾을 포트 번호} | grep LISTEN
or
sudo lsof -i tcp:{찾을 포트 번호}
or
sudo lsof -n -i :{찾을 포트 번호} | grep LISTEN
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
로 명령어를 실행할 경우 비밀번호까지 입력해야 하는 수고로움이 생기는데 그 번거로움을 덜 수 있다.