[nodejs] 실행중인 node process 종료하기 (address already in use :::3000 Error 해결)

8
post-thumbnail

늘 그랬듯이 npm scripts로 서버를 작동시킨 뒤 작업 완료 후Ctrl+C로 서버를 종료시켰는데 다시 서버를 작동시키려 하니 아래와 같은 에러가 발생하였다.

Sass is watching for changes. Press Ctrl-C to stop.
[1] 
[0] events.js:292
[0]       throw er; // Unhandled 'error' event
[0]       ^
[0] 
[0] Error: listen EADDRINUSE: address already in use :::3000

자세히 살펴보니 안 보이는 곳에서 localhost:3000 작동되고 있는 것 같았다. 그럼 내가 모르는 곳에서 작동하고 있는 이 서버를 어떻게 종료시킬 수 있을까?

netstat로 네트워크 상태 모니터링 하기

네트워크 상태 및 프로토콜 통계를 표시하는 화면 보고 싶을 때사용 하는 netstat 명령이 있다고 한다. 터미널에 netstat -an를 입력해서 현재 네트워크 상태를 살펴 보았다.

흠.. 3000 포트가 보였다.. 의심스러운 상황이다!!

killall node

실행중인 모든 노드 프로세스를 종료하기 위해 killall node를 입력한 뒤 다시 서버를 실행시켜보니 정상적으로 서버가 실행되는 것을 확인할 수 있었다!

위 방법으로도 해결 안 될 경우

kllall node을 하였음에도 종료가 되지 않는다면, lsof -i tcp:3000로 현재 3000번을 사용하고 있는 목록을 조회한다음 종료시킬 PID번호를 찾는다.
그 다음 kill -9 PID번호를 입력하여 해당 프로세스를 종료시킨다!

4개의 댓글

comment-user-thumbnail
2021년 7월 8일

잘 보고 갑니다 ~ 🎈

답글 달기
comment-user-thumbnail
2021년 7월 29일

감사합니다. 덕분에 관련 문제 해결했습니다!

답글 달기
comment-user-thumbnail
2022년 6월 22일

혹시 같은문제때문에 kill 명령어로 종료했는데 종료할때마다 node가 새로운 pid를 생성하면서 계속 포트를 잡고 있는 상황은 어떻게 해야하는지 아시나요?

1개의 답글