Saber que proceso utiliza un puerto en Linux

Muchas veces nos encontramos con que en nuestra máquina tenemos escuchando un puerto y no sabemos que proceso o programa lo ha abierto. Aunque existen varias maneras sencillas saber que proceso utiliza un puerto, aquí voy a proponer 2 distintas:

netstat -punlt |grep ':X'

donde XX es el número de puerto que buscamos. Probemos con el 22, para el servidor de SSH:

root@hostname:~# netstat -puntl |grep ':22'
tcp        0      0 0.0.0.0:22           0.0.0.0:*               LISTEN      1265/sshd

Podemos ver que el proceso sshd, con PID 1265 es el que tiene abierto el puerto tcp/22

Si bien esta forma es perfectamente válida, podemos optar por hacerlo de esta otra:

lsof -i:22

Obteniendo:

COMMAND   PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd     1265    usuario    3u  IPv4   9592      0t0  TCP *:22 (LISTEN)
sshd     5980    usuario    3u  IPv4  26729      0t0  TCP ip_del_servidor:22->ip_del_cliente:54764 (ESTABLISHED)
sshd     5981    usuario    3u  IPv4  26735      0t0  TCP ip_del_servidor:22->ip_del_cliente:54763 (ESTABLISHED)
sshd     5982    usuario    3u  IPv4  26761      0t0  TCP ip_del_servidor:22->ip_del_cliente:54765 (ESTABLISHED)

lsof nos permite acotar en función del protocolo y especificarle TCP:X o UDP:X como puerto a buscar.

Ahora ya has aprendido como saber que proceso utiliza un puerto en linux