Finding out which process is using a port on Linux

📄 OneThingWell.dev wiki page | 🕑 Last updated: Mar 31, 2023

The simplest way to find out which process is using a port on Linux is to use the lsof command:

lsof -i :80

(-i tells lsof to list only files matched by the specified Internet address)

Example output (with nginx running on port 80):

COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   1074     root    6u  IPv4  12011      0t0  TCP *:http (LISTEN)
nginx   1074     root    7u  IPv6  12012      0t0  TCP *:http (LISTEN)
nginx   1075 www-data    6u  IPv4  12011      0t0  TCP *:http (LISTEN)
nginx   1075 www-data    7u  IPv6  12012      0t0  TCP *:http (LISTEN)
nginx   1076 www-data    6u  IPv4  12011      0t0  TCP *:http (LISTEN)
nginx   1076 www-data    7u  IPv6  12012      0t0  TCP *:http (LISTEN)
nginx   1077 www-data    6u  IPv4  12011      0t0  TCP *:http (LISTEN)
nginx   1077 www-data    7u  IPv6  12012      0t0  TCP *:http (LISTEN)
nginx   1078 www-data    6u  IPv4  12011      0t0  TCP *:http (LISTEN)
nginx   1078 www-data    7u  IPv6  12012      0t0  TCP *:http (LISTEN)

If no matches are found, you'll get empty output with return code 1 (useful for scripting):

lsof -i :81 || echo "Nothing found."

Alternatively, you could filter the output from lsof -P, but this would require way more resources.

If for some reason you don't have losf already installed, you can install it with:

# deb-based (Debian, Ubuntu, Mint, Raspbian, Kali, etc.)
apt install lsof

# rpm-based (Fedora, CentOS, etc.)
dnf install lsof

# Arch
pacman -S lsof

# Alpine
apk add lsof

Alternatives

Alternatives you could use instead of lsof are fuser and netstat (I'll add more examples on this later).


Comments and suggestions

You can use this form to submit a suggestion or a comment.

If you find this site useful in any way, please consider supporting it.