¿Cómo eliminar un proceso que se ejecuta en un puerto particular en Linux?
Intenté cerrar Tomcat usando el directorio ./shutdown.sh
de 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.
Esto fuser 8080/tcp
imprimirá su PID del proceso vinculado a ese puerto.
Y esto fuser -k 8080/tcp
acabará 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
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)
( -9
corresponde a la SIGKILL - terminate immediately/hard kill
señ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 -15
o soft kill
, que a veces no es suficiente para eliminar un proceso.).
usa el comando
sudo netstat -plten |grep java
grep java
tanto usos tomcat
como java
sus 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 /java
es una identificación de proceso. Ahora use kill
el comando para finalizar el proceso.
kill -9 16085
-9
implica que el proceso será eliminado con fuerza.
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
Una sola línea, un ahorro de tiempo
kill -9 $(lsof -t -i tcp:8080)
Explicación aquí: use una combinación de lsof
ykill
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