Como usuarios de Linux, a veces necesitamos saber en 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 este puerto? En este artículo, presentaremos tres métodos diferentes que puede utilizar para averiguar en qué puerto está escuchando un proceso.
Hemos ejecutado los comandos y procedimientos descritos en este artículo en un sistema Ubuntu 22.04 LTS.
Método 1:usar el comando netstat
Netstat, la utilidad de estadísticas de red, se utiliza para mostrar información sobre 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, por lo que la usamos para averiguar 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, usando el siguiente comando:
$ sudo apt install net-tools
Luego ejecute el siguiente comando:
$ sudo netstat -ltnp
El comando anterior brinda información netstat basada en las siguientes funciones:
- l:muestra solo los enchufes de escucha
- t:muestra la conexión tcp
- n:mostrar direcciones en forma numérica
- p:muestra el ID del proceso/nombre del programa
Por ejemplo, en el resultado anterior del comando netstat, el programa Apache2 con ID de proceso 950 se ejecuta 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 escuchando en un puerto específico.
Ejemplo:
$ sudo lsof -i :80
Este comando enumerará todos los procesos que utilizan el número de puerto TCP 80.
Método 3:Usar el comando fuser
El comando fuser muestra qué ID de proceso están utilizando los archivos, sockets o sistemas de archivos nombrados. 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 el resultado 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 al nombre del programa MySDLd. Por lo tanto, el proceso ID 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 en qué puerto TCP está escuchando un proceso específico en Linux.