How to Find and Kill a Background Node Process

Last updated Nov 3rd, 2022
A quick step by step on how to find and kill whatever node process is currently running so that you can start a new one on the same port

I'm sure you've run into this issue before.

You try to npm run start a project up but you get an error that looks something like the following:

project git:(master) ✗ npm run start

> gatsby develop

/Users/khalilstemmler/Documents/Personal/current/solid-book-wiki/projects/wiki/node_modules/yoga-layout-prebuilt/yoga-layout/build/Release/nbind.js:53
        throw ex;
        ^

Error: listen EADDRINUSE: address already in use 127.0.0.1:8000
    at Server.setupListenHandle [as _listen2] (node:net:1372:16)
    at listenInCluster (node:net:1420:12)
    at GetAddrInfoReqWrap.doListen (node:net:1559:7)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:73:8)
Emitted 'error' event on Server instance at:
    at emitErrorNT (node:net:1399:8)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {
  code: 'EADDRINUSE',
  errno: -48,
  syscall: 'listen',
  address: '127.0.0.1',
  port: 8000
}

What's going on here?

You have another process running on port 8000 and whatever you're trying to spin up also needs to utilize that port.

You can tell this from the EADDRINUSE error constant and the fact that it says 127.0.0.1:8000 is alreaady in use.

What to do?

Here's a quick an easy fix to kill the process running so you can start something else up on that port.

1. Find what's running on the port

First thing is first. Use the lsof command to see what's running.

We'll use it like this: lsof -i:<port>.

wiki git:(master)lsof -i:8000
COMMAND   PID           USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node    49516 khalilstemmler   27u  IPv4 0xb0855a2b3b9a7a2b      0t0  TCP localhost:irdmi (LISTEN)

Just as I thought. Some node process running.

2. Take note of the process number

Take a look at the PID column. That marks the process number.

wiki git:(master)lsof -i:8000
COMMAND   PID           USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node    49516 khalilstemmler   27u  IPv4 0xb0855a2b3b9a7a2b      0t0  TCP localhost:irdmi (LISTEN)

Copy it. You'll need it for the next step.

3. Kill whatever's running on that port by using the process number

Now, let's kill the process.

You can do so with kill -9 <process-number>.

For example:

kill -9 49516

4. Confirm the process has been killed

Good.

Lastly, let's make sure that worked.

We can run the lsof command again to see if there's a process running.

➜  wiki git:(master)lsof -i:8000
➜  wiki git:(master)

Nothing! Looks like we did it.

5. Re-run whatever you were trying to run

And finally, re-run whatever you were trying to run on that port.

Done-zo.

Now get back to it.

Summary

Here's a summary.

  1. Use lsof -i:<port> to find the offending process id
  2. Take note of the process number in table
  3. Use kill -9 <process-number> to kill the process at the port
  4. Confirm it worked with lsof -i:<port> again. You should not see the same process.


Discussion

Liked this? Sing it loud and proud 👨‍🎤.


0 Comments

Commenting has been disabled for now. To ask questions and discuss this post, join the community.


Stay in touch!



About the author

Khalil Stemmler,
Software Essentialist ⚡

I'm Khalil. I turn code-first developers into confident crafters without having to buy, read & digest hundreds of complex programming books. Using Software Essentialism, my philosophy of software design, I coach developers through boredom, imposter syndrome, and a lack of direction to master software design and architecture. Mastery though, is not the end goal. It is merely a step towards your Inward Pull.



View more in Tooling



You may also enjoy...

A few more related articles

Object Stereotypes
The six object stereotypes act as building blocks - stereotypical elements - of any design.
Non-Functional Requirements (with Examples)
Non-functional requirements are quality attributes that describe how the system should be. They judge the system as a whole based ...
Responsibility-Driven Design
Responsibility-Driven Design is the influential object-oriented design method that presents an effective way to turn requirements ...
What are Dependencies, Composition, Delegation, and Aggregation in Object-Oriented Programming?
The four principles of object-oriented programming (abstraction, inheritance, encapsulation, and polymorphism) are features that -...

Want to be notified when new content comes out?

Join 15000+ other Software Essentialists learning how to master The Essentials of software design and architecture.

Get updates