Estoy usando tomcat y, a veces, cuando le digo que se detenga, no mata correctamente el proceso.
Mi manera de evitar esto también es hacer:
lsof -i tcp:8080
que salidas:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 888 root 35u IPv6 780659 0t0 TCP *:http-alt (LISTEN)
java 888 root 39r IPv6 790103 0t0 TCP localhost:58916->localhost:http-alt (CLOSE_WAIT)
java 888 root 40r IPv6 792585 0t0 TCP localhost:58936->localhost:http-alt (CLOSE_WAIT)
java 888 root 75r IPv6 785553 0t0 TCP localhost:58701->localhost:http-alt (CLOSE_WAIT)
java 888 root 77r IPv6 787642 0t0 TCP localhost:58814->localhost:http-alt (CLOSE_WAIT)
java 888 root 130u IPv6 783894 0t0 TCP localhost:58686->localhost:http-alt (CLOSE_WAIT)
java 888 root 353u IPv6 780929 0t0 TCP localhost:58632->localhost:http-alt (CLOSE_WAIT)
Entonces corro
kill -9 pid
Quiero una forma de obtener todos los números pid y matarlos. La cosa es que no sé cómo aislar ese campo.
tomcat
proceso abierto, puede usarkillall -9 tomcat
Respuestas:
Hay una
-t
opción (breve)lsof
que parece hacer exactamente lo que está buscando, es decirVer
man lsof
Suponiendo que tiene los permisos necesarios, puede pasar el resultado a
kill
una lista de PID con sustitución de comandos:fuente
No olvides la
--no-run-if-empty
opción de matar :)De esa forma, kill solo se ejecutará, hay un proceso de escucha, no es necesario que lo compruebes tú mismo.
fuente
lsof -i tcp:8080
produce la salida, luego| egrep -v "COMMAND PID USER"
cae la línea del encabezado, luego| awk '{print $2}'
imprime el segundo campo,| sort -n
prepara los números para| uniq
, que solo emite cada PID único una vez. Poner todo junto da:Pero,
pkill -KILL tomcat
okillall -KILL tomcat
es más fácil.fuente
El único revestimiento de @waltinator es genial.
Le agregaré más sabor:
O
fuente
Este es el script que se me ocurrió con un poco de comprobación de errores.
fuente
Aquí hay una función simple de concha de pescado
simplemente pegue este lechón en un archivo en esta ubicación
~/.config/fish/functions/kill-port.fish
y listo. Puedes llamarlo comokill-port 8000
fuente