Cómo matar un proceso en un puerto en ubuntu


488

Estoy tratando de matar un proceso en la línea de comando para un puerto específico en ubuntu.

Si ejecuto este comando obtengo el puerto:

sudo lsof -t -i:9001

entonces ... ahora quiero correr:

sudo kill 'sudo lsof -t -i:9001'

Me sale este mensaje de error:

ERROR: garbage process ID "lsof -t -i:9001".
Usage:
  kill pid ...              Send SIGTERM to every process listed.
  kill signal pid ...       Send a signal to every process listed.
  kill -s signal pid ...    Send a signal to every process listed.
  kill -l                   List all signal names.
  kill -L                   List all signal names in a nice table.
  kill -l signal            Convert between signal numbers and names.

Probé sudo kill 'lsof -t -i:9001'así


99
Para su información, las preguntas de Ubuntu tienen más posibilidades de ser respondidas en la parte de Ubuntu de la red StackExchange (StackOverflow): askubuntu.com
JScoobyCed

Respuestas:


900

Desea utilizar la marca de retroceso no regular:

sudo kill -9 `sudo lsof -t -i:9001`

Si eso no funciona, también puede usarlo $()para la interpolación de comandos:

sudo kill -9 $(sudo lsof -t -i:9001)

43
Olvidó agregar la opción de señal. Debería leer:sudo kill -9 $(sudo lsof -t -i:9001)
Francesco Gramano

77
@FrancescoGramano: no quieres usar -9 a menos que tengas que hacerlo.
zellio

2
cuando sudo killno puede matar el proceso, el método de @ putra.koreng funciona bien
Fangxin

3
si lo anterior no funciona, intente esto: stackoverflow.com/a/50515868/9339242
Arayan Singh

1
¿Es este sistema operativo independiente o específico de Linux? Si Linux es específico, incluso este comando funcionaos.system("fuser -k 8080/tcp");
Ridhuvarshan


78

PARA UBUNTU 1- Encuentra qué aplicación / proceso está usando el pro, escribe:

sudo netstat -lpn |grep :8080

y presione Entrar.

Obtendrá una salida similar a esta

tcp6       0      0 :::8080                 :::*                    LISTEN      6782/java

2- Tengo el Id de proceso, que es 6782, ahora este es el proceso que usa el puerto 8080.

3- Mata el proceso, escribe: kill 6782

kill 6782

3
Respuesta breve y crujiente
Vikas Kukreti

1
Funcionó perfectamente
Tyler Bell

¿Podría escribir cómo está utilizando el comando anterior?
Mohit Singh

1
Funcionó muy bien mientras que los comandos en respuestas con más votos positivos no se encontraron en mi servidor Ubuntu 18.04. ¡Gracias!
Salivan


35

Hay algunos procesos que no se muestran con el comando netstat normal, por lo que debe verificarlo con sudo.

Hacer sudo netstat -lpn |grep :8080. El proceso que ejecuta el sistema no muestra PID, para obtener el PID de este proceso, deberá ejecutarlo utilizandosudo

Y luego elimine el proceso usando el puerto 8080. Es posible que tenga que usar sudoaquí también. Entonces, para matar este proceso, usasudo kill -9 PID


19

Utilice el comando killport :

sh killport 9001 

Para descargar shell, puede usar wget:

wget https://cdn.rawgit.com/abdennour/miscs.sh/e0aac343/killport

1
si no es trabajo, significa que el puerto objetivo ya está cerrado
Abdennour TOUMI

17

Para matar en el servicio de puerto en ubuntu, ingrese el siguiente comando en la terminal

En terminal:

sudo fuser -k port/tcp
sudo fuser -k 8001/tcp

Este sencillo está muy bien.
Tri

15

También puede usar el fusor para hacer eso (envía SIGKILL de forma predeterminada): sudo fuser -k 9001/tcp



12

Para matar un proceso que se ejecuta en el número de puerto9001

sudo kill -9 $(sudo lsof -t -i:9001)


lsof   - list of files(Also used for to list related processes)

-t     - show only process ID

-i     - show only internet connections related process

:9001  - show only processes in this port number

kill   - command to kill the process

-9     - forcefully

sudo   - command to ask admin privilege(user id and password).

para mas puedes visitar mi blog


11

Para matar el proceso basado en el puerto primero tenemos que encontrar el pid relevante para el puerto dado y matar usando ese pid,

En mi caso, quería obtener el pid (id de proceso) del puerto 3000:

netstat -ltnp | grep -w '3000'

luego encuentra pid que está escuchando tcp

tcp6       0      0 :::3000                 :::*                    LISTEN      29972/node  

obtendrás pid 29972

Para matar este pid, use el siguiente comando

kill -9 29972

pseudocódigo para el proceso de eliminación basado en el puerto

 netstat -ltnp | grep -w 'PORT'

y

kill -9 PID


5

MATAR PUERTO:

sudo Es importante mostrar la identificación del proceso.

$ sudo netstat -antlp | grep 45136
tcp      0      0 0.0.0.0:45136         0.0.0.0:*        LISTEN           **-** 

$ kill -9 45136

5

Usa el comando

 netstat -plten |grep java

usó grep java como tomcat usa java como sus procesos.

Mostrará la lista de procesos con el número de puerto y la identificación del proceso

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

el número antes de / java es una identificación de proceso. Ahora usa el comando kill para matar el proceso

kill -9 16085

-9 implica que el proceso se matará con fuerza.


4

sudo fuser -n tcp -k [número_puerto]

sudo lsof -t -i: [número_puerto]


3

Use esto para matar el proceso que se ejecuta en el número de puerto "9001"

 kill $(lsof -t -i:9001)

Redundante con otros ejemplos, incluida la respuesta aceptada.
Kenster

3

Prueba esto:

lsof -i :port

or 

sudo kill $(sudo lsof -t -i:8000)

or

kill -9 <pid>

or 

sh killport 8000

¡Estoy en Ubuntu 17 y kill -9 <pid>funcionó muy bien para mí!
protoEvangelion

1
sudo kill `sudo lsof -t -i:9001`

no tienes que agregar la -9opción de señal


1

Sus dos pasos de proceso:

  1. Conozca la identificación del proceso en el puerto no. 8080 (puede ser cualquiera)
  2. Proceso de eliminación de esa identificación 8689 (puede ser diferente)

    fuser -n tcp 8080
    
    #o/p 8080/tcp    8689
    
    kill -9 8689
    


1

Muestra conexiones TCP activas, puertos en los que la computadora está escuchando.

netstat -tupln

Le mostrará una lista de todas las conexiones a lo largo de pid. Encuentra y copia el pid y ejecuta el siguiente comando. Asegúrate de reemplazar la identificación actual con el siguiente comando.

kill -9 <copied pid>

-9 uso para matar a la fuerza la conexión.


1

Intente sudo fuser PORT/tcp -k reemplazar PORTcon el puerto que desea matar, por ejemplo80


0

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

se puede usar para matar el proceso. Puede usar cualquier número de puerto en lugar de 9001


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.