bash - usando - ver puertos abiertos linux netstat
¿Cómo encontrar procesos basados en el puerto y matarlos a todos? (7)
sudo fuser -k 8080 / tcp
Una fácil de recordar.
¡Esta sintaxis es probablemente mucho más reciente que la fecha de la pregunta!
Esta pregunta ya tiene una respuesta aquí:
Encuentra procesos basados en el número de puerto y mátalos a todos.
ps -efl | grep PORT_NUMBER | kill -9 process_found_previously
cómo completar la última columna?
1.) lsof -w -n -i tcp:8080
2.) kill -9 processId
El problema con ps -efl | grep PORT_NUMBER
ps -efl | grep PORT_NUMBER
es que PORT_NUMBER
puede coincidir con otras columnas en la salida de ps
también (fecha, hora, pid, ...). Una posible juerga de muerte si se ejecuta por root
Yo haría esto en su lugar:
PORT_NUMBER=1234
lsof -i tcp:${PORT_NUMBER} | awk ''NR!=1 {print $2}'' | xargs kill
Desglose de comando
- (
lsof -i tcp:${PORT_NUMBER}
) - enumere todos los procesos que está escuchando en ese puerto tcp - (
awk ''NR!=1 {print $2}''
) - ignora la primera línea, imprime la segunda columna de cada línea - (
xargs kill
): pasa los resultados como un argumento parakill
. Puede haber varios.
Para matar a todos los procesos de escucha en un puerto en particular, por ejemplo, el puerto 8864
kill -9 $ /`lsof -i:8864 -t/`
Reemplace 8864 por el puerto que desee.
Proponer usar el comando fuser:
fuser -k -TERM -n tcp ${PORT_NUMBER}
... | awk ''{ print $4 }'' | xargs kill -9
prueba con "echo" en lugar de "kill" antes de ejecutar
kill $( lsof -i:6000 -t )
O si necesita permisos:
sudo kill $( sudo lsof -i:6000 -t )