it-swarm.com.de

stoppen Sie alle Instanzen des node.js-Servers

Ich arbeite zum ersten Mal mit Node.js und bin auf dieses Problem gestoßen:

Ich habe einen Knotenserver über das Plugin einer IDE gestartet. Leider kann ich das IDE-Terminal nicht verwenden. Also habe ich versucht, das Skript von der Kommandozeile aus auszuführen.

Dies ist das Problem - ich verwende das Express-Modul und meine App hört einen Port (8080) an. Wenn ich die App über die Befehlszeile starte, wird diese Fehlermeldung ausgegeben:

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)

Obwohl ich nicht ganz sicher bin, was dieser Fehler sein könnte, nahm ich an, dass die App auf einem bereits verwendeten Port hört. So tat ich:

netstat -an

Ich kann es sehen 

TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING

Dies liegt daran, dass der Knotenserver bereits gestartet wurde, als ich versuchte, ihn von der IDE aus zu starten.

Ich möchte also wissen, wie ich alle Serverinstanzen stoppen kann? Auch wenn Sie mir sagen können, wie ich herausfinden kann, was an einem Port läuft und ihn abtöten.

113
Kiran Ambati

Windows-Maschine:

Sie müssen einen Node.js-Server beenden, und es sind keine anderen Node-Prozesse aktiv. Sie können Ihrem Computer anweisen, alle Prozesse mit dem Namen node.exe zu beenden. Das würde so aussehen:

taskkill /im node.exe

Wenn die Prozesse weiterhin bestehen, können Sie die Beendigung der Prozesse erzwingen, indem Sie das Flag /f hinzufügen:

taskkill /f /im node.exe

Wenn Sie eine detailliertere Steuerung benötigen und nur einen Server beenden möchten, der an einem bestimmten Port ausgeführt wird, können Sie netstat verwenden, um die Prozess-ID zu finden, und dann ein Kill-Signal senden. In Ihrem Fall, wo der Port 8080 ist, können Sie Folgendes ausführen:

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

Die fünfte Spalte der Ausgabe ist die Prozess-ID:

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

Sie könnten den Prozess dann mit taskkill /pid 14828 beenden. Wenn der Vorgang nicht beendet werden soll, fügen Sie dem Befehl einfach den Parameter /f (force) hinzu.


Linux-Maschine:

Der Prozess ist fast identisch. Sie können entweder alle Node-Prozesse beenden, die auf dem Computer ausgeführt werden (verwenden Sie -$SIGNAL, wenn SIGKILL nicht ausreichend ist):

killall node

Oder auch mit netstat finden Sie die PID eines Prozesses, der einen Port überwacht:

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

Die Prozess-ID ist in diesem Fall die Nummer vor dem Prozessnamen in der sechsten Spalte, die Sie dann an den Befehl kill übergeben können:

$ kill 1073

Wenn der Prozess das Beenden des Prozesses nicht zulässt, verwenden Sie einfach das Flag -9, das eine SIGTERM ist und nicht ignoriert werden kann:

$ kill -9 1073
277
hexacyanide

Der schnellste Weg ist

killall node

Funktioniert mit Linux, OS X

58
zag2art

Sie können lsof verwenden, um den Prozess abzurufen, der an den erforderlichen Port gebunden ist.

Leider scheinen sich die Flags je nach System zu unterscheiden, aber unter Mac OS X können Sie ausführen

lsof -Pi | grep LISTEN

Zum Beispiel bekomme ich auf meinem Rechner so etwas wie:

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)

Die zweite Nummer ist die PID und der Port, den sie gerade hören, ist rechts vor "(LISTEN)". Finden Sie die gefährliche PID und kill -9 $PID, um mit extremen Vorurteilen zu enden.

43

Windows & GitBash-Terminal Ich musste diesen Befehl in Windows/Webstorm/GitBash-Terminal verwenden

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

Sie können dies versuchen:

taskkill /IM node.exe -F
8
user1796855

wenn Sie einen bestimmten Prozess beenden möchten, können Sie zur Befehlszeilenroute gehen:

ps aux | grep node

um die Prozess-ID zu erhalten und danndo:

kill -9 PID

und wenn Sie alle Prozesse beenden wollen, tun Sie:

killall -9 node
8
Ali_Hr

Linux

Um deine Freunde zu beeindrucken

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

Aber das ist der, an den Sie sich erinnern werden

killall node
2
Alex Nolasco

Sie könnten auch versuchen:

killall nodejs

2
Digitlimit

du kannst es versuchen

killall node

sie können es auch versuchen

killall nodejs
0
Sultan Ali

Multiplattform, stabil, beste Lösung:

verwenden Sie - fkill, um den Prozess zu beenden, der Ihren Port belegt:

fkill -f :8080

Zur Installation von fkill verwenden Sie den Befehl: npm i -g fkill 

0

es funktioniert gut in Windows 10

taskkill /f /im node.exe

Ich benutze Windows Betriebssystem. 

Ich habe den gesamten Node-Prozess beendet und die App neu gestartet. 

versuchen

taskkill /im node.exe
0
Sathya Baman

Wenn Sie Windows verwenden, folgen Sie diesen Anweisungen:

1) Öffnen Sie den Task-Manager. Suchen Sie nach diesem Prozess: http://prntscr.com/kv3uqx

2) Dann einfach Rechtsklick und "Aufgabe beenden".

3) Das ist es, jetzt laufen alle npm-Befehle vom Start aus.

Hoffe es hilft jemandem!

Prost

0
Neil Bannet

Verwenden Sie den folgenden Befehl, um den Knotenserver von der Batchdatei zu beenden und erneut zu starten

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