
En este artículo, aprenderá cómo encontrar qué proceso o servicio está escuchando en un puerto específico en Linux usando los comandos ss, netstat, lsof y fusions..
Un puerto es una entidad lógica que representa un punto final de comunicación y está asociada con un proceso o servicio determinado en un sistema operativo.
En un artículo anterior, explicamos cómo encontrar una lista de todos los puertos abiertos en Linux y cómo usar el comando Netcat para verificar si se puede acceder a un puerto remoto.
1.Utilice el comando ss
El comando ss (estadísticas de socket) es un comando de reemplazo moderno netstat Y viene preinstalado en la mayoría de las distribuciones de Linux. Es más rápido y proporciona información más detallada sobre su conexión de red.
Para encontrar qué proceso está escuchando en un puerto específico, use:
ss -ltnp | grep -w ':80'
salida de muestra:
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=2053,fd=6))
El significado de las banderas de comando es:
l– Mostrar sólo tomas de escucha.t– Mostrar conexiones TCP.n– Mostrar direcciones numéricas (sin resolución de nombre de host).p– Mostrar información del proceso.grep -w– Coincide exactamente con una cadena(:80).
También puede verificar todos los procesos que escuchan en un rango de puertos específico:
ss -ltnp | grep -E ':(80|443)'
O busque qué proceso está utilizando un puerto específico por nombre de proceso:
ss -ltnp 'sport = :80'
2. Utilice el comando netstat
El comando netstat (estadísticas de red) es una herramienta tradicional para mostrar conexiones de red. Aunque está en desuso, se utiliza a favor de ssque todavía se utiliza ampliamente y está disponible en la mayoría de los sistemas.
Si no lo tienes instalado, usa el siguiente comando:
sudo apt install net-tools [On Debian/Ubuntu & Mint] sudo dnf install net-tools [On CentOS/RHEL/Fedora and Rocky/AlmaLinux] pacman -S net-tools [On Arch Linux] emerge sys-apps/net-tools [On Gentoo] sudo zypper install net-tools [On openSUSE]
Una vez instalado, puede usarlo con el comando grep para buscar procesos o servicios escuchando en un puerto específico en Linux como se muestra a continuación (especifique el puerto).
netstat -ltnp | grep -w ':80'
Las banderas de comando son:
l– le dice a netstat que muestre solo los sockets de escucha.t– le dice que muestre las conexiones tcp.n– le indica que muestre una dirección numérica.p– Permitir la visualización del ID del proceso y el nombre del proceso.grep -w– Mostrar coincidencias de cadenas exactas (:80).
Para comprobar los puertos TCP y UDP:
netstat -tulpn | grep -w ':53'
3. Utilice el comando lsof
El comando lsof (Listar archivos abiertos) se utiliza para enumerar todos los archivos abiertos en el sistema Linux, incluidas las conexiones de red.
Instalar lsof En su sistema:
sudo apt install lsof [On Debian/Ubuntu & Mint] sudo dnf install lsof [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] sudo emerge -a sys-apps/lsof [On Gentoo] sudo pacman -S lsof [On Arch Linux] sudo zypper install lsof [On openSUSE]
Para buscar procesos/servicios escuchando en un puerto específico, escriba (especificar puerto).
sudo lsof -i :80

Para comprobar un protocolo específico (TCP o UDP):
sudo lsof -i tcp:80 sudo lsof -i udp:53
Para encontrar todos los puertos de escucha para un proceso específico:
sudo lsof -i -P -n | grep nginx
El significado de la bandera es:
-i– Listar archivos de red.-P– Muestra el número de puerto (no convertido a nombre de puerto).-n– Muestra la dirección IP (no se resuelve en el nombre del host).
4. Utilice el comando fusor
El comando fusion utiliza un archivo o socket para identificar el proceso y es psmisc embalar.
Puedes instalarlo de la siguiente manera:
sudo apt install psmisc [On Debian/Ubuntu & Mint] sudo dnf install psmisc [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] sudo emerge -a sys-apps/psmisc [On Gentoo] sudo pacman -S psmisc [On Arch Linux] sudo zypper install psmisc [On openSUSE]
Puede encontrar el proceso/servicio que está escuchando en un puerto específico ejecutando el siguiente comando (especificando el puerto).
sudo fuser 80/tcp
Luego use el número PID para encontrar el nombre del proceso. comando ps Como esto.
ps -p 2053 -o comm= ps -p 2381 -o comm=

Bonificación: use systemctl como puerto de servicio
Si está ejecutando una distribución basada en systemd, puede verificar qué servicio está configurado para usar un puerto específico:
sudo systemctl status nginx
Esto muestra el estado del servicio y el puerto que está configurado para usar, pero no consulta directamente por número de puerto.
Comparación rápida de herramientas
Comparación rápida de herramientas
| herramienta | velocidad | calificación | Disponibilidad | más adecuado |
|---|---|---|---|---|
| SS | muy rapido | alto | Preinstalado (sistemas modernos) | Uso general, recomendado |
| Estadísticas de red | facilidad | medio | Requiere instalación | sistema heredado |
| rasov | lento | muy alto | Requiere instalación | Información detallada de archivo/socket |
| fusor | rápidamente | bajo | Requiere instalación | Búsqueda PID rápida |
Casos de uso comunes
Compruebe si el puerto ya está en uso antes de iniciar el servicio:
ss -ltn | grep -w ':8080'
Encuentre todos los procesos escuchando en puertos privilegiados (1-1024):
sudo ss -ltnp | awk '$4 ~ /:([0-9]{1,3}|10[0-2][0-4])$/ {print}'
Verifique qué proceso está bloqueando el puerto de su aplicación:
sudo lsof -i :3000
Verifique que el servidor web esté escuchando en el puerto correcto:
ss -ltnp | grep -E ':(80|443)'
Artículos relacionados
También puede consultar estas guías útiles sobre procesos de Linux.
¡eso es todo! ¿Conoce algún otro método para encontrar procesos/servicios que escuchen en un puerto específico en Linux? Háganoslo saber a través del formulario de comentarios a continuación.








