프로젝트를 진행하다가 서버를 열 때 가끔 이런 에러가 뜰 때가 있다.
address already in use ::: (포트번호)
예를 들어서 포트번호가 3000이 찍혀있다고 치면 3000번 포트는 이미 사용중이라 이 포트로는 서버를 열 수 없다는 말이다.
이 때, 터미널에 다음과 같이 입력해보자
lsof -i tcp:3000
여기서 lsof는 list open files의 약자로 시스템에서 열려있는 파일에 대한 정보를 출력해주는 명령어이다.
i 옵션에 프로토콜 이름과 포트 번호를 명시해주면 특정 포트를 사용하는 프로세스 정보를 얻을 수 있다.
i 옵션 뒤에 숫자 4를 넣어주면 IPv4로 오픈한 소켓에 대한 정보들이 나온다.
lsof -i 4
6을 넣으면 IPv6에 대한 정보를 얻을 수 있다.
lsof -i 6
열려있는 모든 네트워크 포트를 확인
lsof -i
열려있는 모든 TCP 포트를 확인하기
lsof -i tcp
그리고 마지막으로 처음에 입력했었던 명령어를 해석해보면
lsof -i tcp:3000
tcp연결로 3000번 포트를 사용하고 있는 프로세스에 대한 정보가 나올것이다.
여기서 중요한건 PID : 프로세스 ID 이다. PID를 확인 후에 다음 명령어에 넣으면
kill -9 PID
해당 PID번호를 사용하고 있던 프로세스를 종료시킨다.
이제 다시 서버가 정상 작동 될 수 있을것이다.