Tutoriales

4 formas de comprobar qué proceso está usando un puerto en Linux

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'

Publicaciones relacionadas

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' 
Utilice el comando netstat para comprobar el puerto

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
Utilice el comando lsof para encontrar el puerto
Utilice el comando lsof para encontrar el puerto

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=
Encuentre el puerto y la ID del proceso en Linux
Encuentre el puerto y la ID del proceso en Linux

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

herramientavelocidadcalificaciónDisponibilidadmás adecuado
SSmuy rapidoaltoPreinstalado (sistemas modernos)Uso general, recomendado
Estadísticas de redfacilidadmedioRequiere instalaciónsistema heredado
rasovlentomuy altoRequiere instalaciónInformación detallada de archivo/socket
fusorrápidamentebajoRequiere instalaciónBú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.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba