Use lsof and ps to Find Running Services
11/11/2019
Sometimes when attempting to run a NodeJS server locally, you may see an error with:
Error: listen EADDRINUSE: address already i use 127.0.0.1:4567
To determine what's listening on this port (and potentially stop it), you can use a combination of the lsof
and ps
commands.
First, use lsof -P -i :<PORT>
replacing <PORT>
with the port you want to check.
We use the -P
with lsof
since we likely don't need the mapping for the port to a name in the network files1.
Take the PID
from lsof
and run ps <PID>
to find what's running on this port. If it's okay to kill it, run kill <PID>
and try to re-run your command again.
Footnotes
-
By using
lsof -P
, it ignores the host machines conversion of port numbers to port names for network files. For example, if we ranlsof
without-P
, theNAME
column would contain services that run on those ports, such as port 4567 forbcm-reporting
or 4568 fortram
. If you're interested in seeing what service MacOS expects to be serving on a specific port, you can run the following command and replace4567
with the port you're curious about:cat /etc/services | grep " 4567/tcp"
. ↩