stop all instances of node.js server

JavascriptWindowsnode.jsExpressPort

Javascript Problem Overview


This is my first time working with Node.js and I ran into this problem:

I have started a Node server through the plugin of an IDE. Unfortunately, I cannot use the IDE's terminal. So I tried to run the script from the command line.

This is the problem - I am using the Express module and my app is listening some port (8080). When I start the app from the command line, it throws this error:

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)

Even though I am not very sure what this error could be I assumed that it's because the app is listening on a port which is already in use. So I did:

netstat -an

I can see

TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING

It's because the Node server is already started when I tried to start it from the IDE.

So I want to know, how can I stop all server instances? Also if you can tell me how to detect what's running on a port and kill it.

Javascript Solutions


Solution 1 - Javascript

Windows Machine:

Need to kill a Node.js server, and you don't have any other Node processes running, you can tell your machine to kill all processes named node.exe. That would look like this:

taskkill /im node.exe

And if the processes still persist, you can force the processes to terminate by adding the /f flag:

taskkill /f /im node.exe

If you need more fine-grained control and need to only kill a server that is running on a specific port, you can use netstat to find the process ID, then send a kill signal to it. So in your case, where the port is 8080, you could run the following:

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

The fifth column of the output is the process ID:

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

You could then kill the process with taskkill /pid 14828. If the process refuses to exit, then just add the /f (force) parameter to the command.


MacOS machine:

The process is almost identical. You could either kill all Node processes running on the machine:

killall node

Or also as alluded to in @jacob-groundwater's answer below using lsof, you can find the PID of a process listening on a port (pass the -i flag and the port to significantly speed this up):

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

The process ID in this case is the number underneath the PID column, which you could then pass to the kill command:

$ kill 1073

If the process refuses to exit, then just use the -9 flag, which is a SIGTERM and cannot be ignored:

$ kill -9 1073

Linux machine:

Again, the process is almost identical. You could either kill all Node processes running on the machine (use -$SIGNAL if SIGKILL is insufficient):

killall node

Or also using netstat, you can find the PID of a process listening on a port:

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

The process ID in this case is the number before the process name in the sixth column, which you could then pass to the kill command:

$ kill 1073

If the process refuses to exit, then just use the -9 flag, which is a SIGTERM and cannot be ignored:

$ kill -9 1073

Solution 2 - Javascript

Works for Linux, OS X

killall node

Solution 3 - Javascript

You can use lsof get the process that has bound to the required port.

Unfortunately the flags seem to be different depending on system, but on Mac OS X you can run

lsof -Pi | grep LISTEN

For example, on my machine I get something like:

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)

The second number is the PID and the port they're listening to is on the right before "(LISTEN)". Find the rogue PID and kill -9 $PID to terminate with extreme prejudice.

Solution 4 - Javascript

Windows & GitBash Terminal I needed to use this command inside Windows / Webstorm / GitBash terminal

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

Solution 5 - Javascript

if you want to kill a specific node process , you can go to command line route and type:

ps aux | grep node

to get a list of all node process ids. now you can get your process id(pid), then do:

kill -9 PID

and if you want to kill all node processes then do:

killall -9 node

-9 switch is like end task on windows. it will force the process to end. you can do:

kill -l

to see all switches of kill command and their comments.

Solution 6 - Javascript

Linux

To impress your friends

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

But this is the one you will remember

killall node

Solution 7 - Javascript

You can try this:

taskkill /IM node.exe -F

Solution 8 - Javascript

it works fine in windows 10

taskkill /f /im node.exe

Solution 9 - Javascript

If you are using Windows, follow this:

  1. Open task manager, look for this process: Task manager showing Node process - Node.js Server-side JavaScript

  2. Then just right click and "End task" it.

  3. That's it, now all the npm commands run form the start.

Solution 10 - Javascript

Multiplatform, stable, best solution:

use fkill to kill process which is taking your port:

fkill -f :8080

To install fkill use command: npm i -g fkill

Solution 11 - Javascript

You could also try:

killall nodejs

Solution 12 - Javascript

you can try

killall node

you can also try

killall nodejs

Solution 13 - Javascript

Am Using windows Operating system.

I killed all the node process and restarted the app it worked.

try

taskkill /im node.exe

Solution 14 - Javascript

Use the following command to kill and restart node server from batch file

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



 

Solution 15 - Javascript

in windows command Type command blow:

taskkill /f /im node.exe

Solution 16 - Javascript

Since you specified Windows. If you want to include this in a bat file, you might not want it to generate an error if the process is not running.

So, to prevent "ERROR: The process "node.exe" not found.", you can add a filter:

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

Solution 17 - Javascript

Press in cmd or bash : Ctrl + C

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionKiran AmbatiView Question on Stackoverflow
Solution 1 - JavascripthexacyanideView Answer on Stackoverflow
Solution 2 - Javascriptzag2artView Answer on Stackoverflow
Solution 3 - JavascriptJacob GroundwaterView Answer on Stackoverflow
Solution 4 - JavascriptEnkodeView Answer on Stackoverflow
Solution 5 - JavascriptAli_HrView Answer on Stackoverflow
Solution 6 - JavascriptAlex NolascoView Answer on Stackoverflow
Solution 7 - Javascriptuser1796855View Answer on Stackoverflow
Solution 8 - JavascriptThavaprakash SwaminathanView Answer on Stackoverflow
Solution 9 - JavascriptNobodyView Answer on Stackoverflow
Solution 10 - JavascriptDariusz FilipiakView Answer on Stackoverflow
Solution 11 - JavascriptEmeka MbahView Answer on Stackoverflow
Solution 12 - JavascriptSultan AliView Answer on Stackoverflow
Solution 13 - JavascriptSathya BamanView Answer on Stackoverflow
Solution 14 - JavascriptSamadhan VirkarView Answer on Stackoverflow
Solution 15 - JavascriptHossein KohzadiView Answer on Stackoverflow
Solution 16 - JavascriptDavidView Answer on Stackoverflow
Solution 17 - JavascriptAltynbek S.View Answer on Stackoverflow