I'd like to be able to find out which process is currently using a certain port in Linux. Is there any way to do this?
5 Answers
You have a couple of options:
lsof -i tcp:80
will give you the list of processes using tcp port 80.
Alternatively,
sudo netstat -nlp
will give you all open network connections.
-
2
lsof -i | grep {username}
is also very useful, i.e.lsof -i | grep apache
Oct 30, 2011 at 3:20 -
1For anyone wondering,
-n
: don't resolve names,-l
: display listening server sockets,-p
: display PID/Program name for sockets.– yellavonMay 12, 2014 at 15:18 -
I usually add
-P
tolsof -i tcp:$PORTNUMBER
so that the port gets printed back to me as a number.– js.Jun 23, 2015 at 8:42
netstat -lp
-
4on mac you have to add a protocol option to -p. so something like: netstat -lp tcp.– vrish88May 25, 2010 at 14:59
I am using "CentOS 7 minimal" which has nor netstat
neither lsof
. But a lot of linux distributions have the socket statistics command (i.e. ss
).
Here is an example of execution:
# ss -tanp | grep 6379
LISTEN 0 128 127.0.0.1:6379 *:* users:(("redis-server",pid=2531,fd=4))
In Linux, To find a process running on a port, do below:
lsof -i :<port_number>
example:
lsof -i :8080
-
Thanks for trying to help. This command was mentioned in the accepted answer. If you have something new, please edit your post.– Ben NJan 6, 2016 at 0:22
also if you want to list running processes that are speaking TCP you can use
sudo netstat -tnp
sudo to get processes you don't own
-t for TCP
-n for numeric
-p for pid
to get processes speaking UDP replace the -t with a -u
sudo netstat -unp
netstat -anb