EADDRINUSE - still can't kill the Node Process
kill -9 897
kill command sends a signal to the given process, but unless you use -9 which sends the SIGKILL
signal, the process is allowed to attempt to kill itself.
stop all instances of node.js server
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
Can't kill NodeJS app
Out of anger I stripped out my app to the most basic elements. File by file, piece by piece and I found the answer.
The culprit was phantomJS - https://github.com/sgentle/phantomjs-node. PATCH version 0.8.2 introduced this bug. Fix was created almost a month ago, merged a week ago but not published on npm yet.
Related Topics
Crontab Is Not Working on Amazon Ec2 Server
Cuda Compiler Not Working with Gcc 4.5 +
Bash Echo with an $ Character Outside the String
Netfilter-Like Kernel Module to Get Source and Destination Address
Mercurial Hg No Changes Found - Can't Hg Push Out
Linux, Where Are the Return Codes Stored of System Daemons and Other Processes
Stty Serial Port Settings for Parity Not Persistent
Extending a Script to Loop Over Multiple Files and Generate Output Names
Ffmpeg Fix Watermark Size or Percentage
Backing Up (And Restoring) a Plone Instance
Unable to Pass Wget a Variable with Quotes Inside the Variable
Eclipse Cdt Indexer Lost After System Update
Need an Overview of Debugging Process from the Hardware Layer
How to Find a List of Ip Addresses in Another File
Automatic Login on Angstrom Linux
How to Execute an Local Script in Remote Server with Parameters