159

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?

studiohack
  • 13,490
Evan Fosmark
  • 1,815

5 Answers5

167

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.

  • 3
    lsof -i | grep {username} is also very useful, i.e. lsof -i | grep apache – LawrenceC Oct 30 '11 at 03:20
  • 1
    For anyone wondering, -n : don't resolve names, -l : display listening server sockets, -p : display PID/Program name for sockets. – yellavon May 12 '14 at 15:18
  • I usually add -P to lsof -i tcp:$PORTNUMBER so that the port gets printed back to me as a number. – js. Jun 23 '15 at 08:42
  • 1
    You also need an sudo on the lsof line, else it will silently fail. – medoc Dec 12 '23 at 18:07
11

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))
Oleksandr
  • 211
  • 2
  • 7
10
netstat -lp
Nick
  • 776
3

In Linux, To find a process running on a port, do below:

lsof -i :<port_number>

example:

lsof -i :8080
Slye
  • 3
  • 2
  • Thanks for trying to help. This command was mentioned in the accepted answer. If you have something new, please edit your post. – Ben N Jan 06 '16 at 00:22
0

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
caffeine
  • 21
  • 3