¿Liberando un puerto TCP / IP?

146

netstat -tulnap me muestra qué puertos están en uso. ¿Cómo liberar un puerto en Linux?

informatik01
fuente

Respuestas:

214

Como han dicho los demás, deberá eliminar todos los procesos que escuchan en ese puerto. La forma más fácil de hacerlo sería utilizar el comando fuser (1). Por ejemplo, para ver todos los procesos escuchando las solicitudes http en el puerto 80 (ejecutar como root o usar sudo):

# fuser 80/tcp

Si quieres matarlos, simplemente agrega la opción -k.

uzi
fuente
1
Descubrí que enviar una solicitud al puerto también lo limpia (aunque no soy un experto en Linux)
Matej
1
Para instalar el fusor en Debian: sudo apt-get install psmisc ( bitflop.com/document/107 )
Korneel
1
Funcionó, pero también tuve que instalar psmisc en CentOs 7 ( sudo yum install psmisc)
Marlon Bernardes
1
kill -9 $(fuser 80/tcp 2>/dev/null)
Hanynowsky
76

Para matar un puerto específico en Linux, use el siguiente comando

sudo fuser -k Port_Number/tcp

reemplace Port_Number con su puerto ocupado.

Anil Chahal
fuente
66
Esto realmente mata el proceso que abrió el puerto y no el puerto en sí.
vinayc
16

Puede usar tcpkill(parte del dsniffpaquete) para eliminar la conexión que está en el puerto que necesita:

sudo tcpkill -9 port PORT_NUMBER
AlexT
fuente
11
esto simplemente se cuelga$ sudo tcpkill -9 port 5432 tcpkill: listening on lxcbr0 [port 5432]
Anentropic
16

En tipo de terminal:

netstat -anp|grep "port_number"

Mostrará los detalles del puerto. Ir a la última columna. Estará en este formato. Por ejemplo: - PID / java

luego ejecuta:

kill -9 PID. Worked on Centos5

Para Mac:

lsof -n -i :'port-number' | grep LISTEN

Respuesta de muestra:

java   4744 (PID)  test  364u  IP0 asdasdasda   0t0  TCP *:port-number (LISTEN)

y luego ejecuta:

kill -9 PID 

Trabajó en Macbook

usuario2332505
fuente
obviamente esto no funciona si la columna PID está vacía para ese puerto
Anentropic
1
... y eso sucede si no tiene permiso para ver el proceso ... intente sudo netstatver los PID :)
Anentropic
Intenté matar un puerto en una instancia de Amazon ec2 a través de putty cli. Forever dijo que no tenía procesos en ejecución pero que el puerto (4200 para una aplicación angular) todavía estaba abierto. Este es el único comando que funcionó para mí.
vtechmonkey
9

El "netstat --programs"comando le dará la información del proceso, suponiendo que sea root. Entonces tendrás que matar el proceso "ofensivo" que bien puede comenzar de nuevo solo para molestarte :-).

¿Qué estás tratando de lograr aquí? Las soluciones variarán según los procesos que contengan esos puertos.

paxdiablo
fuente
8

Para verificar todos los puertos:

netstat -lnp

Para cerrar un puerto abierto:

fuser -k port_no/tcp

Ejemplo:

fuser -k 8080/tcp

En ambos casos, puede usar el sudocomando si es necesario.

Vinayak
fuente
7

Elimine el proceso que está escuchando el puerto en cuestión. Creo que netstat te muestra los identificadores de proceso.

Gleb
fuente
3
netstat -anp | grep <port> la última columna tiene el proceso
user1747935
2

Si realmente quiere matar un proceso de inmediato, le envía una señal de KILL en lugar de una señal de TERM (esta última una solicitud de detención, la primera entrará en vigencia inmediatamente sin ninguna limpieza). Es fácil de hacer:

kill -KILL <pid>

Sin embargo, tenga en cuenta que dependiendo del programa que esté deteniendo, su estado puede corromperse gravemente al hacerlo. Normalmente solo desea enviar una señal KILL cuando la terminación normal no funciona. Me pregunto cuál es el problema subyacente que intentas resolver y si matar es la solución correcta.

Paul de Vrieze
fuente
0

Creo que la única forma será detener el proceso que ha abierto el puerto.

Tilo Prütz
fuente
-5

sudo killall -9 "nombre del proceso"

Zonxwedop
fuente
-14

Apagar la computadora siempre mata el proceso para mí.

Zonxwedop
fuente
apagar una máquina servidor es raro.
waqas
24
¿Recibiste tu insignia "más divertida"?
jplandrain
No es necesario apagar su computadora.
Anil Chahal
La mejor idea de la historia 10/10
Valentin Roudge
11
a diferencia de algunas de las otras respuestas, esto seguramente funcionará
Anentropic