[email protected]Support 24/7 · Billing 09:00 – 00:00LinkedInXFacebook
NexonHost
Netherlands Dedicated ServersAmsterdam · Equinix AM6Germany Dedicated ServersFrankfurt · Equinix FR4Romania Dedicated ServersBucharest · VoxilityAustria Dedicated ServersVienna · Interxion VIEBulgaria Dedicated ServersSofia · TelepointFrance Dedicated ServersParis · Interxion PAR — Marseille · Digital Realty MRS3Ireland Dedicated ServersDublin · Equinix DB2Italy Dedicated ServersMilan · Irideos AvalonPoland Dedicated ServersWarsawSpain Dedicated ServersMadrid · Equinix MD2United States Dedicated ServersAshburn · Equinix DC
All articles
Getting startedMarch 23, 2023

How to Check for Listening Ports

How To Check For Listening Ports

This article explains how to use the netstat, ss and lsof commands to find out which services are listening on which ports. The instructions are applicable for all Linux and Unix-based operating systems like macOS.

When troubleshooting network connectivity or application-specific issues, one of the first things to check should be what ports are actually in use on your system and which application is listening on a specific port.

 

What is Listening Port

Network port is identified by its number, the associated IP address, and type of the communication protocol, such as TCP or UDP.

Listening port is a network port on which an application or process listens on, acting as a communication endpoint.

Each listening port can be open or closed (filtered) using a firewall. In general terms, an open port is a network port that accepts incoming packets from remote locations.

You can’t have two services listening to the same port on the same IP address.

For example, if you are running an Apache web server that listens on ports 80 and 443 and you try to install Nginx , the later will fail to start because the HTTP and HTTPS ports are already in use.

 

Check Listening Ports with netstat

netstat is a command-line tool that can provide information about network connections.

To list all TCP or UDP ports that are being listened on, including the services using the ports and the socket status use the following command:

sudo netstat -tunlp

The options used in this command have the following meaning:

  • -t – Show TCP ports.

  • -u – Show UDP ports.

  • -n – Show numerical addresses instead of resolving hosts.

  • -l – Show only listening ports.

  • -p – Show the PID and name of the listener’s process. This information is shown only if you run the command as root or sudo user.

The output will look something like this:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      903/sshd
tcp        0      0 0.0.0.0:6081            0.0.0.0:*               LISTEN      1381/varnishd
tcp        0      0 127.0.0.1:6082          0.0.0.0:*               LISTEN      1320/varnishd
tcp6       0      0 :::22                   :::*                    LISTEN      903/sshd
tcp6       0      0 ::1:25                  :::*                    LISTEN      1290/master
tcp6       0      0 :::6081                 :::*                    LISTEN      1381/varnishd
udp        0      0 127.0.0.1:323           0.0.0.0:*                           566/chronyd
udp6       0      0 ::1:323                 :::*                                566/chronyd

The important columns in our case are:

  • Proto – The protocol used by the socket.

  • Local Address – The IP Address and port number on which the process listen to.

  • PID/Program name – The PID and the name of the process.

If you want to filter the results, use the grep command . For example, to find what process listens on TCP port 22 you would type:

sudo netstat -tnlp | grep :22

The output shows that on this machine port 22 is used by the SSH server:

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      903/sshd
tcp6       0      0 :::22                   :::*                    LISTEN      903/sshd

If the output is empty it means that nothing is listening on the port.

You can also filter the list based on criteria, for example, PID, protocol, state, and so on.

netstat is obsolete and replaced with ss and ip , but still it is of the most used commands to check network connections.

 

Check Listening Ports with ss

ss is the new netstat. It lacks some of the netstat features, but exposes more TCP states and it is slightly faster. The command options are mostly the same, so the transition from netstat to ss is not difficult.

To get a list of all listening ports with ss you would type:

sudo ss -tunlp

The output is almost the same as the one reported by netstat:

Netid State      Recv-Q Send-Q           Local Address:Port                          Peer Address:Port
udp   UNCONN     0      0                    127.0.0.1:323                                      *:*                   users:(("chronyd",pid=566,fd=5))
udp   UNCONN     0      0                        [::1]:323                                   [::]:*                   users:(("chronyd",pid=566,fd=6))
tcp   LISTEN     0      128                          *:22                                       *:*                   users:(("sshd",pid=903,fd=3))
tcp   LISTEN     0      128                          *:6081                                     *:*                   users:(("varnishd",pid=1381,fd=6))
tcp   LISTEN     0      10                   127.0.0.1:6082                                     *:*                   users:(("varnishd",pid=1320,fd=5))
tcp   LISTEN     0      128                       [::]:22                                    [::]:*                   users:(("sshd",pid=903,fd=4))
tcp   LISTEN     0      100                      [::1]:25                                    [::]:*                   users:(("master",pid=1290,fd=13))
tcp   LISTEN     0      128                       [::]:6081                                  [::]:*                   users:(("varnishd",pid=1381,fd=7))

 

Check Listening Ports with lsof

lsof is a powerful command-line utility that provides information about files opened by processes.

In Linux, everything is a file. You can think of a socket as a file that writes to the network.

To get a list of all listening TCP ports with lsof type:

sudo lsof -nP -iTCP -sTCP:LISTEN

The options used are as follows:

  • -n – Do not convert port numbers to port names.

  • -p – Do not resolve hostnames, show numerical addresses.

  • -iTCP -sTCP:LISTEN – Show only network files with TCP state LISTEN.

COMMAND   PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd      445     root    3u  IPv4  16434      0t0  TCP *:22 (LISTEN)
sshd      445     root    4u  IPv6  16445      0t0  TCP *:22 (LISTEN)
apache2   515     root    4u  IPv6  16590      0t0  TCP *:80 (LISTEN)
mysqld    534    mysql   30u  IPv6  17636      0t0  TCP *:3306 (LISTEN)
mysqld    534    mysql   33u  IPv6  19973      0t0  TCP *:33060 (LISTEN)
apache2   764 www-data    4u  IPv6  16590      0t0  TCP *:80 (LISTEN)
apache2   765 www-data    4u  IPv6  16590      0t0  TCP *:80 (LISTEN)
master    929     root   13u  IPv4  19637      0t0  TCP *:25 (LISTEN)
master    929     root   14u  IPv6  19638      0t0  TCP *:25 (LISTEN)

Most of the output columns names are self-explanatory:

  • COMMAND, PID, USER – The name, the pid and the user running the program associated with the port.

  • NAME – The port number.

To find what process is listening on a particular port, for example, port 3306 you would use:

sudo lsof -nP -iTCP:3306 -sTCP:LISTEN

The output shows that MySQL server uses port 3306:

COMMAND PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld  534 mysql   30u  IPv6  17636      0t0  TCP *:3306 (LISTEN)

For more information, visit the lsof man page and read about all other powerful options of this tool.

 

Conclusion

We have shown you several commands that you can use to check what ports are in use on your system, and how to find what process listens on a specific port.

Keep reading
How to Check Linux Version.
March 21, 2023

How to Check Linux Version.

How To Check Linux Version. This article shows how to check what Linux distribution and version is installed on your system using the command line. Some of the most popular Linux distributions are Debian, Red Hat, Ubuntu, Arch Linux, Fedora, CentOS, Kali Linux, OpenSUSE, Linux Mint, etc. A Linux…

Read article
How to Set or Change Hostname in Linux
March 21, 2023

How to Set or Change Hostname in Linux

How To Set Or Change Hostname In Linux This tutorial will walk you through the process of changing the hostname in Linux without the need of restarting the system. The instructions should work on any modern Linux distribution that uses systemd. By default, the system hostname is set during the…

Read article
How to Use sed to Find and Replace String in Files
March 21, 2023

How to Use sed to Find and Replace String in Files

How To Use Sed To Find And Replace String In Files In this article, we’ll talk about how to find and replace strings with sed. We’ll also show you how to perform a recursive search and replace. When working with text files, you’ll often need to find and replace strings of text in one or…

Read article
Get in Touch

Together, Let’s Build a Faster, Safer Internet.

Build scalable infrastructure with NexonHost — high-performance dedicated servers, VPS hosting, cloud hosting, and DDoS protection across Europe.

Get Started →Contact Us
[email protected]Support 24/7 · Billing 09:00 – 00:00