parar todas as instâncias do servidor node.js.


186

Esta é a minha primeira vez trabalhando com Node.js e me deparei com este problema:

Eu iniciei um servidor Node através do plug-in de um IDE. Infelizmente, não posso usar o terminal do IDE. Então, eu tentei executar o script na linha de comando.

Esse é o problema - estou usando o módulo Express e meu aplicativo está escutando alguma porta (8080). Quando inicio o aplicativo na linha de comando, ele lança este erro:

events.js:71
    throw arguments[1]; // Unhandled 'error' event
                   ^
Error: listen EADDRINUSE
    at errnoException (net.js:770:11)
    at HTTPServer.Server._listen2 (net.js:910:14)
    at listen (net.js:937:10)
    at HTTPServer.Server.listen (net.js:986:5)
    at Object.<anonymous> (C:\xampp\htdocs\node\chat\app.js:5:5)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.runMain (module.js:492:10)

Mesmo não tendo muita certeza de qual poderia ser esse erro, presumi que é porque o aplicativo está escutando uma porta que já está em uso. Então eu fiz:

netstat -an

eu consigo ver

TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING

É porque o servidor Node já está iniciado quando tentei iniciá-lo a partir do IDE.

Então, eu quero saber como posso parar todas as instâncias do servidor? Além disso, se você puder me dizer como detectar o que está sendo executado em uma porta e matá-la.


1
Desculpe, eu não mencionei que estou no ambiente Windows. Poste os comandos que são relevantes. Obrigado
— Kiran Ambati

e também você pode encontrar a tarefa node.js no gerenciador de tarefas do Windows. encontre o progresso cujo nome é Node.js: do lado do servidor ... e abra as informações detalhadas, você encontrará o pid e os detalhes do progresso dos seus nodejs #
— Xiuying Lan

Este é o que funcionou para mim: superuser.com/questions/1183057/…
— desconhecido

Respostas:


422

Máquina Windows:

Precisa matar um servidor Node.js.e você não possui nenhum outro processo do Node em execução, pode dizer à sua máquina para matar todos os processos nomeados node.exe. Isso seria assim:

taskkill /im node.exe

E se os processos ainda persistirem, você pode forçar o encerramento dos processos adicionando o /fsinalizador:

taskkill /f /im node.exe

Se você precisar de um controle mais refinado e precisar matar apenas um servidor que esteja sendo executado em uma porta específica, poderá netstatencontrar o ID do processo e enviar um sinal de interrupção para ele. Portanto, no seu caso, onde está a porta 8080, você pode executar o seguinte:

C:\>netstat -ano | find "LISTENING" | find "8080"

A quinta coluna da saída é o ID do processo:

  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       14828
  TCP    [::]:8080              [::]:0                 LISTENING       14828

Você pode então matar o processo com taskkill /pid 14828. Se o processo se recusar a sair, basta adicionar o /fparâmetro (force) ao comando.


Máquina Linux:

O processo é quase idêntico. Você pode matar todos os processos do Node em execução na máquina (use -$SIGNALse SIGKILLfor insuficiente):

killall node

Ou também netstat, usando , você pode encontrar o PID de um processo escutando em uma porta:

$ netstat -nlp | grep :8080
tcp        0      0 0.0.0.0:8080         0.0.0.0:*                   LISTEN      1073/node

O ID do processo, neste caso, é o número antes do nome do processo na sexta coluna, que você pode passar para o killcomando:

$ kill 1073

Se o processo se recusar a sair, basta usar o -9sinalizador, que é um SIGTERMe não pode ser ignorado:

$ kill -9 1073

1
desculpe, como exatamente eu posso usar esses comandos? process.exit () pode estar no código? mas o servidor já está iniciado. É provável que tenha sido iniciado com o nó de comando app.js, mas não com o node-dev app.js. E "node killall" não está funcionando. Estou fazendo errado? Obrigado
— Kiran Ambati

1
process.exit()no seu aplicativo faz com que a instância do NodeJS seja fechada. killall nodeno bash mataria todas as instâncias do NodeJS em execução na sua máquina.
— Hexacyanide

obrigado @hexacyanide. Estou desenvolvendo no Windows. Isso torna o nó killall um comando inválido porque não posso usá-lo na linha de comando.
— 91113 Kiran Ambati

3
Tente taskkill /IM node.exe. Isso matará todos os processos nomeados node.exe.
— Hexacyanide

1
Eu tive que usar taskkill / F / IM node.exe para fazê-lo funcionar, obrigado!
— Luis

75

O caminho mais rápido é

killall node

Funciona com Linux, OS X


Método fácil, mas se qualquer outro aplicativo estiver em execução, precisamos ser mais específicos.
— Rajeev Uppala 19/02/19

Nao funciona para mim. node: no process foundAlém disso, quando eu grep para processos de um nó que são executados na porta específica, o ID do processo possui em -vez de um número em si.
— Giorgi Gvimradze 16/08/19

49

Você pode usar lsofo processo get que vinculou à porta necessária.

Infelizmente, os sinalizadores parecem diferentes, dependendo do sistema, mas no Mac OS X você pode executar

lsof -Pi | grep LISTEN

Por exemplo, na minha máquina, recebo algo como:

mongod     8662 jacob    6u  IPv4 0x17ceae4e0970fbe9      0t0  TCP localhost:27017 (LISTEN)
mongod     8662 jacob    7u  IPv4 0x17ceae4e0f9c24b1      0t0  TCP localhost:28017 (LISTEN)
memcached  8680 jacob   17u  IPv4 0x17ceae4e0971f7d1      0t0  TCP *:11211 (LISTEN)
memcached  8680 jacob   18u  IPv6 0x17ceae4e0bdf6479      0t0  TCP *:11211 (LISTEN)
mysqld     9394 jacob   10u  IPv4 0x17ceae4e080c4001      0t0  TCP *:3306 (LISTEN)
redis-ser 75429 jacob    4u  IPv4 0x17ceae4e1ba8ea59      0t0  TCP localhost:6379 (LISTEN)

O segundo número é o PID e a porta que eles estão ouvindo está à direita antes de "(OUVIR)". Encontre o PID desonesto e kill -9 $PIDtermine com extremo preconceito.


Oi Jacob, por favor, você pode editar a resposta e adicionar a versão do Windows porque estou desenvolvendo no Windows. Obrigado
— Kiran Ambati

Eu não tenho idéia de como fazê-lo no Windows, desculpe Kiran.
— Jacob Groundwater

Essa é uma ótima resposta, especialmente quando há vários servidores de nós em execução em portas diferentes. Eu posso distinguir facilmente os IDs do processo em execução em cada porta.
— Modulitos

25

Terminal Windows e GitBash Eu precisava usar esse comando dentro do terminal Windows / Webstorm / GitBash

cmd "/C TASKKILL /IM node.exe /F"

3
Este fez isso por mim. Obrigado
— Adim Victor

1
Este fez isso por mim também. Eu achei a maneira mais rápida de matar todos os processos de nós no Windows.
— Asad

16

se você deseja eliminar um processo de nó específico, pode ir para a rota da linha de comandos e digitar:

ps aux | grep node

para obter uma lista de todos os IDs de processo do nó. agora você pode obter seu ID do processo (pid) e faça:

kill -9 PID

e se você deseja eliminar todos os processos do nó, faça:

killall -9 node

A opção -9 é como a tarefa final no Windows. forçará o processo a terminar. você pode fazer:

kill -l

para ver todas as opções do comando kill e seus comentários.


8

Você pode tentar isso:

taskkill /IM node.exe -F

7

Linux

Para impressionar seus amigos

ps aux | grep -i node | awk '{print $2}' | xargs  kill -9

Mas é esse que você vai se lembrar

killall node


2

Se você estiver usando o Windows, siga este procedimento:

  1. Abra o gerenciador de tarefas, procure este processo: Gerenciador de tarefas mostrando o processo do nó - Node.js. JavaScript do lado do servidor

  2. Em seguida, basta clicar com o botão direito e "Finalizar tarefa".

  3. É isso, agora todos os comandos npm são executados desde o início.


1

Solução multiplataforma, estável e melhor:

use fkill para matar o processo que está levando sua porta:

fkill -f :8080

Para instalar o fkill, use o comando: npm i -g fkill


1

podes tentar

killall node

você também pode tentar

killall nodejs

Esses comandos já foram postados várias vezes. Não há problema em publicá-las novamente, mas, em seguida, você deve pelo menos adicionar mais alguma explicação para a sua resposta de forma que outros possam aprender com ele
— Nico Haase


0

Estou usando o sistema operacional Windows.

Eu matei todo o processo do nó e reiniciei o aplicativo que funcionava.

experimentar

taskkill /im node.exe

0

Use o seguinte comando para eliminar e reiniciar o servidor do nó a partir do arquivo em lotes

    @echo off
cd "D:\sam\Projects\Node"
taskkill /IM node.exe -F
start /min cmd /C "node index.js"
goto :EOF


-3

Pressione em cmd ou bash: Ctrl + C


Isso funciona apenas na visualização do terminal com o processo do nó em execução e também não garante a eliminação do processo.
— Design by Adrian
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.