Linux: averigüe en qué número de puerto está escuchando un proceso

Como usuarios de Linux, a veces necesitamos saber qué número de puerto está escuchando un proceso en particular. Todos los puertos están asociados con un ID de proceso o servicio en un sistema operativo. Entonces, ¿cómo encontramos ese puerto? Este artículo presenta tres métodos diferentes para encontrar en qué número de puerto está escuchando un proceso.

Hemos ejecutado los comandos y procedimientos descritos en este artículo en un sistema Ubuntu 18.04 LTS.

Método 1: uso del comando netstat

Netstat o la utilidad de estadísticas de red se utiliza para ver información relacionada con las conexiones de red. Esto incluye información sobre estadísticas de interfaz, tablas de enrutamiento y mucho más. Esta utilidad está disponible en la mayoría de los sistemas Linux, así que vamos a utilizarla para ver información sobre qué puertos están usando ciertos procesos en el sistema.

Para usar el comando netstat, debe instalar la utilidad net-tools si aún no está instalada en su sistema a través del siguiente comando:

$ sudo apt install net-tools

Luego ejecute el siguiente comando:

$ sudo netstat -ltnp

El comando anterior proporciona información de netstat basada en las siguientes características:

  • l: mostrar solo las tomas de escucha
  • t: muestra la conexión tcp
  • n: mostrar direcciones en forma numérica
  • p: muestra el ID del proceso / nombre del programa

Para example, en la salida anterior del comando netstat, el programa Apache2 con el ID de proceso 950 se está ejecutando en el puerto número 80.

También puede filtrar estadísticas para un puerto específico incorporando la función grep en su comando.

Ejemplo:

$ sudo netstat -ltnp | grep -w ':80'

Este comando le dirá específicamente qué proceso se está ejecutando en el puerto número 80.

Método 2: usar el comando lsof

La utilidad lsof o Lista de archivos abiertos ayuda a enumerar todos los archivos abiertos en su sistema Linux. Podemos usar esta utilidad para ver todos los procesos abiertos en un puerto específico.

Para usar el comando lsof, debe instalar la utilidad lsof si aún no está instalada en su sistema a través del siguiente comando:

$ sudo apt install lsof

Usemos lsof para ver el servicio que escucha en un puerto específico.

Ejemplo:

$ sudo lsof -i :80

Este comando enumerará todos los procesos que utilizan el puerto TCP número 80.

Método 3: uso del comando fusor

El comando fuser muestra qué ID de proceso están utilizando los archivos, sockets o sistemas de archivos con nombre. Podemos usar este comando para ver los ID de procesos que se ejecutan en un puerto TCP específico.

Para usar el comando fuser, debe instalar la utilidad psmisc si aún no está instalada en su sistema a través del siguiente comando:

$ sudo apt install psmisc

Veamos todos los ID de proceso que se ejecutan en el puerto TCP 3306 a través del siguiente comando:

$ sudo fuser 3306/tcp

Puede especificar cualquier número de puerto en este comando para ver sus procesos de escucha.

En la salida anterior, puede ver que el ID de proceso 975 está escuchando en TCP 3306.

Para ver a qué programa corresponde este ID de proceso, ejecute el siguiente comando:

Sintaxis:

$ ps -p [processID] -o comm=

En nuestro caso:

$ ps -p [975] -o comm=

El resultado muestra que el ID de proceso 975 corresponde a los nombres de programa MySDLd. Por lo tanto, el ID de proceso 975 del programa MySQLd está escuchando en el puerto número 3306.

A través de los tres métodos que ha aprendido en este artículo, puede ver fácilmente qué puerto TCP está escuchando un proceso específico en Linux.