If you’re troubleshooting a service that you know is running normally, the next step is to ensure it’s listening on the correct network port.

The netstat command shows the services listening to ports on a Linux server and the details of any connections currently made to them. The connection details to consider during basic network daemon troubleshooting are the addresses that the daemon is listening on (including the port number), the daemon’s process identifier (PID), and the program name.

You need to run netstat on the server that is running the service. Netstat is not affected by your firewall configuration.

Note: You can also use the lsof and ss commands to check ports. Many of the command flags contained in this article are the same when you run the lsof and ss commands. However, the output returned when you use these commands might not resemble the output of the netstat tool. For more information about both commands, see the lsof and ss command manuals.

Check ports#

To list the TCP ports that are being listened on, and the name of each listener’s daemon and its PID, run the following command:

sudo netstat -plnt

The following example shows the output for three common programs that are listening on three different sockets.

$ sudo netstat -plnt
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:3306                0.0.0.0:*                   LISTEN      3686/mysqld
tcp        0      0 :::443                      :::*                        LISTEN      2218/httpd
tcp        0      0 :::80                       :::*                        LISTEN      2218/httpd
tcp        0      0 :::22                       :::*                        LISTEN      1051/sshd

Filter the list#

If the list of listening daemons is long, you can use grep to filter it. For example, to filter out everything except the default web server port 80, run the following command:

$ sudo netstat -plnt | grep ':80'
tcp        0      0 :::80                       :::*                        LISTEN      8448/httpd

Analyze the results#

Common outcomes include the following results:

  • Nothing is listening on the port. Check the service configuration files, and then restart the service.

  • The correct service is listening on the correct port. In this case you need to test the service more thoroughly. Skip to the article on testing the listening service for response using netcat.

  • Something other than the expected service appears to be listening on the port.

Note: A super-server, such as xinetd, might be listening on the port. Check your xinetd configuration to ensure that this behavior is acceptable.

If something else is listening on the port, you can disable the program by running sudo service httpd stop, or change its configuration so that it no longer listens on the port. When netstat shows the port is free, enable the correct service (for example sudo service vsftpd start).

If you make any changes because the incorrect service is listening, run the netstat command again. If netstat doesn’t show the program listening on the correct port, you need to address its configuration before you go any further.

If you make changes at this point, be sure to test your setup to verify that you have resolved your issue.

If using the netstat did not resolve your port issues, continue to test connections to the service by using the netcat command.