Stop alle instanties van Node.js Server

Dit is mijn eerste keer dat met Node.js werkt en ik liep dit probleem op:

Ik heb een knooppuntserver gestart via de plug-in van een IDE. Helaas kan ik de Terminal van de IDE niet gebruiken. Dus ik probeerde het script uit de opdrachtregel uit te voeren.

Dit is het probleem – ik gebruik de Express Module en mijn app luistert een poort (8080). Wanneer ik de app van de opdrachtregel start, gooit deze deze foutmelding:

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)

Hoewel ik niet zeker weet wat deze fout zou kunnen zijn, heb ik aangenomen dat het is omdat de app luistert op een poort die al in gebruik is. Dus deed ik:

netstat -an

Ik kan

zien

TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING

Het is omdat de knoopserver al is gestart toen ik het probeerde te starten vanaf de IDE.

Dus ik wil het weten, hoe kan ik alle serveregeningen stoppen? Ook als je me kunt vertellen hoe je moet detecteren wat er op een poort loopt en het doden.


Antwoord 1, Autoriteit 100%

Windows-machine:

Als je een Node.js-server moet doden en er geen andere Node-processen actief zijn, kun je je machine vertellen om alle processen met de naam node.exete doden. Dat zou er zo uitzien:

taskkill /im node.exe

En als de processen nog steeds aanhouden, kunt u de processen afdwingen door de vlag /ftoe te voegen:

taskkill /f /im node.exe

Als je meer gedetailleerde controle nodig hebt en alleen een server wilt doden die op een specifieke poort draait, kun je netstatgebruiken om de proces-ID te vinden en er vervolgens een kill-signaal naar sturen . Dus in jouw geval, waar de poort 8080is, zou je het volgende kunnen uitvoeren:

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

De vijfde kolom van de uitvoer is de proces-ID:

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

Je zou het proces dan kunnen beëindigen met taskkill /pid 14828. Als het proces weigert af te sluiten, voeg dan gewoon de parameter /f(forceren) toe aan het commando.


MacOS-machine:

Het proces is bijna identiek. U kunt ofwel alle Node-processen die op de machine draaien, beëindigen:

killall node

Of ook zoals vermeld in @jacob-groundwater’s antwoord hierondermet behulp van lsof, u kan de PID vinden van een proces dat op een poort luistert (geef de vlag -ien de poort door om dit aanzienlijk te versnellen):

$ lsof -Pi :8080
COMMAND   PID      USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node     1073    urname   22u  IPv6  bunchanumbershere      0t0  TCP *:8080 (LISTEN)

De proces-ID is in dit geval het nummer onder de PID-kolom, die u vervolgens kunt doorgeven aan de opdracht kill:

$ kill 1073

Als het proces weigert af te sluiten, gebruik dan gewoon de -9vlag, die een SIGTERMis en niet kan worden genegeerd:

$ kill -9 1073

Linux-machine:

Nogmaals, het proces is bijna identiek. U kunt ofwel alle Node-processen die op de machine draaien, beëindigen (gebruik -$SIGNALals SIGKILLonvoldoende is):

killall node

Of ook door netstatte gebruiken, kunt u de PID vinden van een proces dat op een poort luistert:

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

De proces-ID is in dit geval het nummer vóór de procesnaam in de zesde kolom, die u vervolgens kunt doorgeven aan de opdracht kill:

$ kill 1073

Als het proces weigert om af te sluiten, gebruik dan gewoon de -9vlag, die een SIGTERMis en kan niet worden genegeerd:

$ kill -9 1073

Antwoord 2, Autoriteit 17%

De snelste manier is

killall node

Werkt met Linux, OS X


Antwoord 3, Autoriteit 10%

U kunt lsofgebruiken, ontvang het proces dat is gebonden aan de gewenste poort.

Helaas lijken de vlaggen anders, afhankelijk van het systeem, maar op Mac OS X kunt u

uitvoeren

lsof -Pi | grep LISTEN

Bijvoorbeeld op mijn machine krijg ik zoiets als:

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)

Het tweede nummer is de PID en de poort waarnaar ze luisteren is aan de rechterkant voor “(Luister)”. Zoek de Rogue PID en kill -9 $PIDom te beëindigen met extreem vooroordelen.


Antwoord 4, Autoriteit 6%

Windows & amp; Gitbash-terminal
Ik moest deze opdracht in Windows / WebStorm / Gitbash-terminal gebruiken

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

Antwoord 5, autoriteit 3%

als u een specifiek knooppuntproces wilt beëindigen, kunt u naar de opdrachtregelroute gaan en typen:

ps aux | grep node

om een lijst te krijgen van alle knooppuntproces-ID’s. nu kun je je proces-ID (pid) krijgen, dan
doen:

kill -9 PID

en als je alle knooppuntprocessen wilt uitschakelen, doe dan:

killall -9 node

-9 schakelaar is als een eindtaak op Windows. het zal het proces dwingen te beëindigen.
je kunt doen:

kill -l

om alle schakelaars van het kill-commando en hun opmerkingen te zien.


Antwoord 6, autoriteit 2%

Linux

Om indruk te maken op je vrienden

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

Maar dit is degene die je je zult herinneren

killall node

Antwoord 7, autoriteit 2%

Je kunt dit proberen:

taskkill /IM node.exe -F

Antwoord 8

het werkt prima in Windows 10

taskkill /f /im node.exe

Antwoord 9

Multiplatform, stabiele, beste oplossing:

Gebruik fkill om het proces te doden dat je poort neemt:

fkill -f :8080

Om de opdracht van FKill-gebruik te installeren: NPM I -G FKILL


Antwoord 10

Als u Windows gebruikt, volgt u dit:

  1. Open taakbeheer, zoek naar dit proces:

  2. Klik vervolgens met de rechtermuisknop op en “Eind taak”.

  3. Dat is het, nu worden alle NPM-opdrachten uitgevoerd de start.


Antwoord 11

U kunt het ook proberen:

killall nodejs


Antwoord 12

U kunt

proberen

killall node

U kunt ook

proberen

killall nodejs

Antwoord 13

Gebruik het Windows-besturingssysteem.

Ik heb al het knooppuntsproces gedood en de app opnieuw gestart die het werkte.

Probeer

taskkill /im node.exe

Antwoord 14

Gebruik de volgende opdracht om knooppuntserver te doden en opnieuw te starten van Batch Bestand

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

Antwoord 15

In Windows-opdracht
Type Command Blow:

TAKKILL / F / IM NODE.EXE


Antwoord 16

Aangezien u Windows hebt opgegeven. Als u dit in een BAT-bestand wilt opnemen, wil u misschien niet dat het een fout genereert als het proces niet actief is.

Dus, om “error te voorkomen: het proces” node.exe “niet gevonden.”, kunt u een filter toevoegen:

TASKKILL /F /IM node.exe /FI "PID gt 0"

Antwoord 17

Druk op CMD of bash:
CTRL + C

Other episodes