노는게 제일 좋습니다.

포트가 사용중이어서 서버프로그램을 실행 할 수 없을 때 본문

포트가 사용중이어서 서버프로그램을 실행 할 수 없을 때

노는게 제일 좋습니다. 2020. 8. 23. 00:53

문제

돌아가고 있던 서버의 프로세스가 문제가 생겼는데, 포트가 사용중이어서 프로그램을 재실행 할 수 없는 경우가 있다.

이 경우 사용중인 포트에서 어떤 프로세스가 돌아가고있는지, 해당 프로세스를 어떻게 죽일 수 있는지 알면 된다.

events.js:292
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE: address already in use :::8080
    at Server.setupListenHandle [as _listen2] (net.js:1313:16)
    at listenInCluster (net.js:1361:12)
    at Server.listen (net.js:1447:7)
    at Object.<anonymous> (/home/wonjinyi/Desktop/LearnNode/200823.js:9:6)
    at Module._compile (internal/modules/cjs/loader.js:1137:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
    at Module.load (internal/modules/cjs/loader.js:985:32)
    at Function.Module._load (internal/modules/cjs/loader.js:878:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
    at internal/main/run_main_module.js:17:47
Emitted 'error' event on Server instance at:
    at emitErrorNT (net.js:1340:8)
    at processTicksAndRejections (internal/process/task_queues.js:84:21) {
  code: 'EADDRINUSE',
  errno: 'EADDRINUSE',
  syscall: 'listen',
  address: '::',
  port: 8080
}

 

 

해결

1. lsof로 사용중인 포트에서 죽이고자 하는 프로세스ID를 알아낸다. 아래 내용에서는 node의 PID인 22731이다.

(base) wonjinyi@wonjinYi:~/Desktop/LearnNode$ lsof -i tcp:8080
COMMAND   PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
chrome   2189 wonjinyi   64u  IPv6 396182      0t0  TCP ip6-localhost:54042->ip6-localhost:http-alt (ESTABLISHED)
node    22731 wonjinyi   28u  IPv6 396158      0t0  TCP *:http-alt (LISTEN)
node    22731 wonjinyi   36u  IPv6 396183      0t0  TCP ip6-localhost:http-alt->ip6-localhost:54042 (ESTABLISHED)
node    22731 wonjinyi   37u  IPv6 396994      0t0  TCP ip6-localhost:http-alt->ip6-localhost:54044 (CLOSE_WAIT)

 

2. kill -9 <프로세스ID> 로 프로세스를 죽인다.

(base) wonjinyi@wonjinYi:~/Desktop/LearnNode$ kill -9 22731
[1]+  죽었음               node 200823

 

3. 이후 다시 프로그램을 실행하면 해당 포트에서 정상적으로 실행된다.

Comments