문제 상황
서버를 만들고 글의 수정, 삭제 기능을 추가하기 위해서 서버를 껐다 켰다 하던 도중, 서버생성 쪽 코드를 건든 적이 없었는데 다음과 같은 에러 메세지와 함께 서버가 열리지 않는 것이었다.
에러 메세지를 보니 내가 사용하고 있던 8080번 포트가 이미 사용중이라는 것이었다.
정말 막막했지만, 코딩 고수들의 도움을 받아 새로운 사실을 알게되었다.
서버를 열었을 때 내가 지정한 포트(8080)가 열리고 서버를 닫았을 때 포트가 함께 닫히는 줄 알았는데 그게 아니었다.
이미 내가 사용중인 포트는 그대로 사용되고 있었고 그 때문에 8080번 포트로 연결하는 서버가 열리지 않는 것이었다.
서버를 닫더라도 프로세스가 진행중이라면 포트가 그대로 사용중이게 된다는 것이었다.
taskkill
결국 사용중으로 떠있는 포트를 닫아 주어야 했다.
포트를 닫는 명령어로는 taskkill이 있다. taskkill은 하나 이상의 작업 또는 프로세스를 종료한다. 이때 프로세스는 프로세스 ID또는 이미지 이름으로 종료할 수 있다.
taskkill /f /pid [pid 번호]
taskkill /f /im filename.exe
taskkill
+ /f : 프로세스가 강제로종료되도록 지정한다. 이 매개변수는 원격 프로세스에 대해 무시된다. 모든 원격 프로세스는 강제 종료됩니다.
+ /t : 지정된 프로세스와 해당 프로세스에서 시작한 자식 프로세스를 종료한다.
+ /im : 이미지이름을 사용하여 종료
+ /pid : 프로세스 id값을 사용하여 종료
추가적으로 실행중인 프로세스 리스트를 보고 싶을때는 tasklist 명령어를 사용한다.
netstat -ano / netstat -ano | findstr [port]
이제 pid(process id)값만 알게 되면 해당 포트를 꺼줄 수 있다.
netstat -ano라는 명령어를 사용하면 ip주소와 포트번호, pid를 확인할 수 있다.
내가 원하는 포트의 pid를 찾기 위해서는 netstat -ano | findstr 8080 을 입력해주면 된다.
내 경우에는 8080포트의 pid가 10120이었고 위에 적혀있는 taskkill을 이용해주었다.
taskkill /f /pid 10120 을 하니 8080번 포트가 꺼지는 것을 확인할 수 있었다.
(2023.12.10 수정)
매번 이 방법을 사용했는데 이 방법이 안되는 경우도 있었다.
taskkill /f /pid (pid번호) 를 사용했을 때 위와 같은 오류가 뜬다면 taskkill /F /PID (pid번호)를 사용해주면 정상적으로 작동한다.
참고
https://blog.naver.com/ncloud24/221388026417
https://philip1994.tistory.com/6
https://learn.microsoft.com/ko-kr/windows-server/administration/windows-commands/taskkill
'Error' 카테고리의 다른 글
[Error] yarn: command not found 에러 (Window) (1) | 2023.12.01 |
---|---|
Rest / Thunder Client 무한 waiting.. (1) | 2023.11.24 |
SyntaxError: Unexpected token } in JSON at position 68 (0) | 2023.11.22 |
[Git] ssh: connect to host github.com port 22: Connection timed out 에러 (4) | 2023.11.13 |
[MongoDB Error] connection error: MongoServerSelectionError: connect ECONNREFUSED ::1:27017 에러 (1) | 2023.11.08 |