Error: listen EADDRINUSE: address already in use :::3000 에러 해결 하기 | 우분투 서버
2022. 11. 16. 17:28ㆍ백엔드 Back-end
address already in use ::: 3000 에러 해결하기
목차
- 오류 상황
- 해결 방안
오류 상황
AWS 우분투 서버에서 노드 프로그램을 돌리려고 명령어를 입력했는데 이런 오류메시지가 떳다.
> backend_test@0.0.1 start
> node app
node:events:491
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE: address already in use :::3000
3000번 포트로 무언가 실행되고있기 때문에 노드 프로그램을 3000번 포트로 실행할 수 없다는 말
해결하기
어떤 포트로 무슨 프로그램이 돌아가고 있는지 알아보기 위해 다음 명령어를 실행한다.
방법 1
lsof 명령어 사용해서 pid (프로세스 아이디)를 알아내고 해당 포트로 실행되고 있는 프로세스를 중지(kill)시키는 방법
1. pid 알아내기
터미널에 다음 명령어를 친다.
lsof -ti :$PORT
예시) lsof -ti :3000
위 예시처럼 $PORT 부분을 자신이 알기 원하는 포트 번호로 변경해서 명령어를 입력하면 된다.
2. 해당 포트로 실행되고 있는 프로세스 중지시키기
터미널에 다음 명령어를 입력한다.
kill $(lsof -ti :$PORT)
예시) kill $(lsof -ti :3000)
만약 바로 킬이 안된다면 다음 SIGKILL 시그널을 같이 넘겨준다.
kill -9 $(lsof -ti :3000)
만약 권한이 없다는 메시지가 뜬다면 sudo 명령어로 관리자 권한으로 실행해준다.
kill -9 $(lsof -ti :3000)
3. 노드 프로그램을 실행해보면 오류 없이 잘 실행되는 것을 확인할 수 있다.
방법 2
1. 명령어 사용 위해 설치
sudo apt install net-tools
리눅스에 net-tools을 설치하고 나면 netstat 명령어를 사용할 수 있게 된다.
2. 다음 명령어를 실행
netsdtat -lntp
현재 3000번 포트를 사용하고 있는 프로그램의 PID를 알아낸다.
3. 1번 방법처럼 kill 명령어 수행
kill -9 $PID
$PID 부분은 알아낸 프로세스 번호로 대체해주면 된다.
'백엔드 Back-end' 카테고리의 다른 글
최종 발표회 트러블 슈팅 정리 및 기술적 의사결정 내용 정리 (0) | 2022.12.12 |
---|---|
몽고디비 데이터 중복 판단 문제 발생 :: 트러블 슈팅 (0) | 2022.12.07 |
S3 대신 사용할 수 있는 클라우드 저장소들에 대한 고찰 : AWS S3, Cloudinary, 구글 클라우드 서비스 (0) | 2022.11.25 |
MongooseError: Operation users.findOneAndUpdate() buffering timed out after 10000ms 몽구스 에러 해결하기 (0) | 2022.11.18 |
multer로 이미지 전송하기 feat 서버 부하 (0) | 2022.11.13 |