¿Cómo eliminar un proceso que se ejecuta en un puerto particular en Linux?

Resuelto veer7 asked hace 12 años • 35 respuestas

Intenté cerrar Tomcat usando el directorio ./shutdown.shde Tomcat /bin. Pero descubrí que el servidor no estaba cerrado correctamente. Y por eso no pude reiniciar.
Mi Tomcat se está ejecutando en el puerto 8080.

Quiero finalizar el proceso de Tomcat que se ejecuta en 8080. Primero quiero tener la lista de procesos ejecutándose en un puerto específico (8080) para poder seleccionar qué proceso eliminar.

veer7 avatar Jul 20 '12 23:07 veer7
Aceptado

Esto fuser 8080/tcpimprimirá su PID del proceso vinculado a ese puerto.

Y esto fuser -k 8080/tcpacabará con ese proceso.

Funciona solo en Linux. Más universal es el uso de lsof -i4(o 6 para IPv6).

Forma general:

# list the TCP process bound to port PORT
fuser PORT/tcp
# Example: list the TCP process bound to port 8080
fuser 8080/tcp

# list the UDP process bound to port PORT
fuser PORT/udp
# Example: list the UDP process bound to port 8080
fuser 8080/udp
nudzo avatar Jul 21 '2012 21:07 nudzo

Para enumerar cualquier proceso escuchando el puerto 8080:

lsof -i:8080

Para finalizar cualquier proceso que escuche el puerto 8080:

kill $(lsof -t -i:8080)

o más violentamente:

kill -9 $(lsof -t -i:8080)

( -9corresponde a la SIGKILL - terminate immediately/hard killseñal: consulte Lista de señales de eliminación y ¿Cuál es el propósito de la opción -9 en el comando de eliminación? . Si no se especifica ninguna señal kill, se envía la señal TERM, también conocida como -15o soft kill, que a veces no es suficiente para eliminar un proceso.).

Franck Dernoncourt avatar Sep 15 '2015 18:09 Franck Dernoncourt

usa el comando

 sudo netstat -plten |grep java

grep javatanto usos tomcatcomo javasus procesos.

Mostrará la lista de procesos con número de puerto e identificación de proceso.

tcp6       0      0 :::8080                 :::*                    LISTEN      
1000       30070621    16085/java

el número anterior /javaes una identificación de proceso. Ahora use killel comando para finalizar el proceso.

kill -9 16085

-9implica que el proceso será eliminado con fuerza.

veer7 avatar Jul 20 '2012 16:07 veer7

Opción 1 Una frase sencilla para eliminar solo ESCUCHAR en un puerto específico:

kill -9 $(lsof -t -i:3000 -sTCP:LISTEN)

Opción 2 Si tiene npm instalado, también puede ejecutar

npx kill-port 3000
Gal Bracha avatar Jan 22 '2017 13:01 Gal Bracha

Una sola línea, un ahorro de tiempo

kill -9 $(lsof -t -i tcp:8080)

Explicación aquí: use una combinación de lsofykill

root@localhost:~# lsof -i tcp:8080
COMMAND   PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
java    23672 sine  238u  IPv6 3028222      0t0  TCP localhost:http-alt (LISTEN)

seleccione pid y usekill

kill 23672
dlmeetei avatar Nov 26 '2019 16:11 dlmeetei