prosource

오류에서 localhost를 해제하는 방법: EADDRINUSE 듣기

probook 2023. 8. 26. 11:59
반응형

오류에서 localhost를 해제하는 방법: EADDRINUSE 듣기

윈도우 7에서 nodejs로 작성된 서버를 테스트하고 있는데 명령줄에서 테스터를 실행하려고 하면 다음 오류가 발생합니다.

Error: listen EADDRINUSE
at errnoException (net.js:614:11)
at Array.0 (net.js:704:26)
at EventEmitter._tickCallback (node.js:192:40)

재부팅하지 않고 어떻게 고칠 수 있습니까?

실행:

ps -ax | grep node

다음과 같은 것을 얻을 수 있습니다.

60778 ??         0:00.62 /usr/local/bin/node abc.js

다음을 수행합니다.

kill -9 60778

서버를 바인딩하려는 주소가 사용 중임을 의미합니다.다른 포트를 시도하거나 해당 포트를 사용하여 프로그램을 닫습니다.

Linux(Ubuntu 파생 제품 이상)

killall node

이 양식보다 쉽습니다.

ps | grep <something>
kill <somepid>

포트를 잡고 있는 고아 자녀가 있는 경우에도 작동하지 않습니다.대신 다음 작업을 수행합니다.

netstat -punta | grep <port>

포트가 고정되어 있으면 다음과 같은 것을 볼 수 있습니다.

tcp           0      0.0.0.0:<port>          0.0.0.*       LISTEN     <pid>/<parent>

이제 pid로 죽입니다.

kill -9 <pid>

다음 명령은 실행 중인 노드 프로세스 목록을 제공합니다.

ps | grep node

해당 포트를 해제하려면 다음을 사용하여 프로세스를 중지합니다.

kill <processId>

'가 발생했습니다'라는가 발생했습니다.EADDRINUSE응용 프로그램이 사용하려는 포트가 다른 프로세스에 의해 사용되고 있기 때문입니다.이 포트를 해제하려면 점유 프로세스를 종료해야 합니다.

Windows에 있으므로 명령 프롬프트를 사용하여 프로세스를 종료할 수 있습니다.cmd)와cmd차단 응용 프로그램의 프로세스 ID(PID)를 검색할 수 있습니다.프로세스를 종료하거나 종료하려면 PID가 필요합니다.

여기에 단계별 가이드가 있습니다...

  1. 지정된 포트에서 실행 중인 모든 프로세스를 찾습니다(이 예에서는 포트가 "3000"임).

    netstat -ano | ":3000" 찾기

  2. netstat명령은 지정된 포트에서 실행 중인 모든 프로세스를 나열합니다.에의 에.netstat는 결를확수있다니습할인을 볼 수 .PIDs(이 예에서 PID는 "8308"입니다).한 특목정대자알수있다니습아에 대해 더 알 수 .PID다음 명령을 실행합니다.

    작업 목록/fi "pideq 8308"

  3. 할 수 .PID예에서 입니다.): (PID는 "8308"입니다.)

    태스크킬 /pid 8308 /f

스크린샷

enter image description here

오류가 발생하면 EADDRINUSE를 들으십시오.

다음 셸 명령을 실행해 보십시오.

netstat -a -o | grep 8080
taskkill /F /PID 6204

I grep for 왜냐하면 내8080에서 되고 있다는 을 알기 (ed for 8080, ed for 8080, 포트에실행되고있다서다것는을때알니기문입왜내면가버서냐하)static언제 시작하는지 알려줍니다. http://127.0.0.1:8080').다른 포트를 검색해야 할 수도 있습니다.

가 서가실중가정합다니고라에서 합니다.port 3000

lsof -i tcp:3000
    COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    node    11716 arun   11u  IPv6 159175      0t0  TCP *:3000 (LISTEN)

에는 그사후용을 합니다.kill -9 <pid>

sudo kill -9 11716

아래 명령을 사용하여 특정 포트에서 실행 중인 프로세스를 종료합니다. 아래 예제에서는 3000을 사용합니다.

kill -9 $(lsof -t -i:3000)

한 가지 가능한 해결책은 브라우저에서 해당하는 "http://localhost:3000/" 스크립트를 실행하는 창을 닫는 것이었습니다.

오류가 발생할 때

오류: EADDRINUSE 수신 대기

명령 프롬프트를 열고 다음 지시사항을 입력합니다.

netstat -a -o | grep 8080
taskkill /F /PID** <*ur Process ID no*>

전화 갭 인터페이스를 다시 시작한 후.

어떤 프로세스 ID 폰갭을 사용하고 있는지 알고 싶다면 Task MANAGER를 열고 Column heading PID를 보고 PID no를 찾습니다.

프로세스 ID 확인

-i:8081의 황혼

특정 프로세스를 죽이는 것보다

sudo kill -9 2925

enter image description here

에서 말한 전한술.killall -9패트릭이 제안한 노드는 예상대로 작동하고 문제를 해결하지만 당신은 왜 그런지에 대한 바로 이 답변의 편집 부분을 읽고 싶을 수 있습니다.kill -9최선의 방법이 아닐 수도 있습니다.

또한 모든 활성 프로세스를 맹목적으로 죽이기보다는 단일 프로세스를 대상으로 하는 것이 좋습니다.

이 경우 먼저 해당 포트에서 실행 중인 프로세스의 프로세스 ID(PID)를 가져옵니다(예: 8888).

lsof -i tcp:8888

그러면 다음과 같은 결과가 반환됩니다.

COMMAND   PID    USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node     57385   You   11u  IPv6 0xac745b2749fd2be3      0t0  TCP *:ddi-tcp-1

(Listen) 그럼 그냥 하세요 (ps - 실제로는 하지 마세요).아래를 계속 읽어 주십시오):

kill -9 57385

이 기능은 Mac에서 작동합니다.

1단계.

sudo lsof -i tcp:3000 (or whatever port you want to kill)

위의 명령은 현재 포트를 보유하고 있는 프로세스 ID를 제공합니다.

2단계.

Kill -9 <pid>

app.js 또는 프로젝트 구성 파일에서 포트를 변경할 수 있습니다.

기본값('포트', 80)

포트 80이 이미 사용 중인지 확인하려면 다음 작업을 수행합니다.

netstat - antp | grep 80

netstat - antp | grep 노드

노드 프로세스가 이미 실행 중인지 확인할 수 있습니다.

ps - ef | grep 노드

그리고 이미 실행 중인 것을 발견하면 다음을 사용하여 죽일 수 있습니다.

모든 노드 종료

학습 중에 동일한 코드에서 실행되는 동일한 포트 8081에서 수신하는 두 대의 서버를 만들었습니다.

첫 번째 서버 생성 슈드가 작동했습니다. 두 번째 서버 생성이 EADDRINUSE로 실패했습니다.

node.js 콜백 지연이 작동하지 않거나 두 번째 서버 생성에 예외가 발생하여 프로그램이 종료되어 첫 번째 서버도 닫혔을 수 있습니다.

2 서버 문제 힌트, 나는 다음에서 얻었습니다.오류를 해결하는 방법: nodejs를 사용하는 동안 EADDRINUSE를 들으시겠습니까?

에서 EADDRINUSE를 됩니다.netstat -nptl그리고 그 이후로는kill -9 {process-number}이 명령은 노드 프로세스를 종료하기 위한 것이며 이제 node server.js 명령을 다시 실행할 수 있습니다.

EADDRINUSE 듣기 :::8080

netstat -nptl

tcp600 :::9000 ::* LISTEN 9660/java
tcp600 :::5800 ::* LISTEN -
tcp600 :::5900 ::* LISTEN -
tcp600 :::8080 ::* LISTEN 10401/노드
tcp600 :::20080 ::* LISTEN 9660/java
tcp600 :::80 ::* LISTEN -
tcp600 :::22 ::* LISTEN -
tcp600 :::10137 ::* LISTEN 9660/java

킬 -9 10401

Mac과 Raspberry Pi에 설치된 노드가 없습니다.정확히 같은 문제가 있었고 '킬올'을 하는 것은 도움이 되지 않았습니다.일단 제가 라즈베리 파이를 종료하고 컴퓨터를 다시 시작하자 그것은 잘 작동했습니다.

두 개의 다른 탭에서 npm start 명령을 실행하려고 했을 수 있습니다. 일부 탭에서 이미 실행되고 있을 때 npm start 명령을 실행할 수 없습니다. 한 번 확인하십시오.

위의 모든 것을 시도했지만 여전히 연지 프로세스를 찾을 수 없는 사람은 모두 다시 시도하지만 명령 앞에 "sudo"를 포함해야 합니다.

UI를 더 좋아하면 Windows 작업 관리자에서 Node.js 프로세스를 찾아서 종료합니다.

ps - ef | grep 노드 찾기 app.js, killpid of app.js

시작 노드보다 ubantu 터미널에 있는 pkill-9 노드로 노드를 간단히 죽입니다.

터미널에서 다음 명령을 사용하여 포트를 종료해야 합니다.

$ sudo killall -9 nodejs

저는 패키지에 아래 내용을 추가하여 이 문제를 해결했습니다.활성 포트 제거용 json - 4000( 경우) WSL2/리눅스/Mac에서 실행 중

"scripts": {
    "dev": "nodemon app.js",
    "predev":"fuser -k 4000/tcp && echo 'Terminated' || echo 'Nothing was running on the PORT'",
  }

원천

나는 그냥 그 (cmd) 터미널을 삭제하고 다른 터미널을 열고 node myfile.js를 다시 실행합니다.

그것은 저에게 아주 잘 맞습니다.

너무 늦었을 수도 있지만, 그것은 매력적으로 작동하고 있습니다.

필요합니다pm2설치 예정

npm install -g pm2

현재 실행 중인 서버(server.js)를 중지하려면:

pm2 stop -f server.js

지금은 2022년이고 저는 몬테레이(Mac 사용자)에 있습니다.

enter image description here

lsof -i tcp:3000
Kill -9 <PID shown in your list>

노드 서버를 종료하려면 먼저 터미널에서 다음 명령을 실행합니다.

  1. top
  2. 다른 창을 열고 서버를 복사합니다.id이전 창에서:PID number -9 kill이제 노드 서버를 종료했습니다. 앱을 다시 실행해 보십시오.

명령어를 사용했습니다.netstat -ano | grep "portnumber"해당 프로세스에 대한 포트 번호/PID를 나열합니다.그런 다음 사용할 수 있습니다.taskkill -f //pid 111111프로세스를 종료하기 위해 마지막 값은 첫 번째 명령에서 찾은 pid입니다.

프로세스를 종료한 후에도 노드가 다시 생성되는 문제가 종종 발생하기 때문에 노드 프로세스를 수동으로 종료하기 위해 오래된 작업 관리자를 사용해야 합니다.

창에서 다음 명령을 실행하십시오.

taskkill /F /PID 1952

언급URL : https://stackoverflow.com/questions/8553957/how-to-release-localhost-from-error-listen-eaddrinuse

반응형