web-dev-qa-db-fra.com

arrêtez toutes les instances du serveur node.js

C'est la première fois que je travaille avec Node.js et j'ai rencontré ce problème:

J'ai démarré un serveur de nœud via le plugin d'un IDE. Malheureusement, je ne peux pas utiliser le terminal de l'IDE. J'ai donc essayé d'exécuter le script à partir de la ligne de commande.

C'est le problème - j'utilise le module Express et mon application écoute un port (8080). Lorsque je lance l'application à partir de la ligne de commande, cette erreur est générée:

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)

Même si je ne suis pas très sûr de ce que cette erreur pourrait être, j'ai supposé que c'était parce que l'application écoute sur un port déjà utilisé. Alors j'ai fait:

netstat -an

Je vois 

TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING

C'est parce que le serveur de nœud est déjà démarré lorsque j'ai essayé de le démarrer à partir de l'EDI.

Je veux donc savoir comment puis-je arrêter toutes les instances de serveur? Aussi, si vous pouvez me dire comment détecter ce qui tourne sur un port et le tuer.

113
Kiran Ambati

Machine Windows:

Si vous avez besoin de tuer un serveur Node.js et qu'aucun autre processus de noeud n'est en cours d'exécution, vous pouvez demander à votre ordinateur de supprimer tous les processus nommés node.exe. Cela ressemblerait à ceci:

taskkill /im node.exe

Et si les processus persistent, vous pouvez les forcer à se terminer en ajoutant l'indicateur /f:

taskkill /f /im node.exe

Si vous avez besoin d'un contrôle plus fin et que vous ne devez tuer qu'un serveur qui s'exécute sur un port spécifique, vous pouvez utiliser netstat pour rechercher l'ID de processus, puis lui envoyer un signal de suppression. Ainsi, dans votre cas, où le port est 8080, vous pouvez exécuter ce qui suit:

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

La cinquième colonne de la sortie est l'ID de processus:

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

Vous pourriez alors tuer le processus avec taskkill /pid 14828. Si le processus refuse de quitter, ajoutez simplement le paramètre /f (force) à la commande.


Machine Linux:

Le processus est presque identique. Vous pouvez soit tuer tous les processus de noeud exécutés sur la machine (utilisez -$SIGNAL si SIGKILL est insuffisant):

killall node

Ou aussi, en utilisant netstat, vous pouvez trouver le PID d'un processus en écoute sur un port:

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

Dans ce cas, l'ID de processus est le numéro précédant le nom du processus dans la sixième colonne, que vous pouvez ensuite transmettre à la commande kill:

$ kill 1073

Si le processus refuse de quitter, utilisez simplement l'indicateur -9, qui est une variable SIGTERM et ne peut pas être ignoré:

$ kill -9 1073
277
hexacyanide

Le moyen le plus rapide est

killall node

Fonctionne avec Linux, OS X

58
zag2art

Vous pouvez utiliser lsof pour obtenir le processus lié au port requis.

Malheureusement, les drapeaux semblent être différents selon les systèmes, mais sous Mac OS X, vous pouvez exécuter

lsof -Pi | grep LISTEN

Par exemple, sur ma machine, j'ai quelque chose comme:

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)

Le deuxième numéro est le PID et le port qu'ils écoutent est à droite avant "(LISTEN)". Trouvez le PID non autorisé et le kill -9 $PID pour terminer avec un préjudice extrême.

43
Jacob Groundwater

Terminal Windows et GitBash J'avais besoin d'utiliser cette commande dans un terminal Windows/Webstorm/GitBash

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

Vous pouvez essayer ceci:

taskkill /IM node.exe -F
8
user1796855

si vous voulez tuer un processus spécifique, vous pouvez aller à la ligne de commande:

ps aux | grep node

pour obtenir l'identifiant du processus et ensuitedo:

kill -9 PID

et si vous voulez tuer tous les processus alors faites:

killall -9 node
8
Ali_Hr

Linux

Pour impressionner vos amis

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

Mais c'est celui dont vous vous souviendrez

killall node
2
Alex Nolasco

Vous pouvez aussi essayer:

killall nodejs

2
Digitlimit

tu peux essayer

killall node

vous pouvez aussi essayer

killall nodejs
0
Sultan Ali

Multiplateforme, stable, meilleure solution:

utilisez fkill pour tuer le processus qui prend votre port:

fkill -f :8080

Pour installer fkill, utilisez la commande suivante: npm i -g fkill 

0
Dariusz Filipiak

ça marche très bien dans windows 10

taskkill /f /im node.exe

Am utilisant le système d'exploitation Windows. 

J'ai tué tout le processus de nœud et redémarré l'application qui fonctionnait. 

essayer

taskkill /im node.exe
0
Sathya Baman

Si vous utilisez Windows, suivez ceci:

1) Ouvrez le gestionnaire de tâches, recherchez ce processus: http://prntscr.com/kv3uqx

2) Ensuite, faites un clic droit et "Fin de tâche".

3) Ca y est, maintenant toutes les commandes npm sont lancées.

J'espère que ça aide quelqu'un!

À votre santé

0
Neil Bannet

Utilisez la commande suivante pour tuer et redémarrer le serveur de noeud à partir d'un fichier de commandes.

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