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í

Tampa
fuente
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)
zellio
fuente
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
Mohit Singh
fuente
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
38

La mejor manera de matar un puerto en la terminal de ubuntu es fuser -k 9001/tcp

Vishnu S Babu
fuente
3
Trabajó sin problemas para mí
conoce a Zaveri el
A mí también me funcionó. Esta debería ser la respuesta aceptada.
CodeSlave
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

Usuario16119012
fuente
19

Utilice el comando killport :

sh killport 9001 

Para descargar shell, puede usar wget:

wget https://cdn.rawgit.com/abdennour/miscs.sh/e0aac343/killport
Abdennour TOUMI
fuente
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
Abhishek-Saini
fuente
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

Dmitriusan
fuente
15

solo entra

    fuser -k -n tcp 3000

en la terminal, donde 3000 es su número de puerto

Sai Kumar
fuente
1
usando fusor: muestre qué procesos usan los archivos, sockets o sistemas de archivos nombrados -k: representa un kill -n: Netstat tcp: es un protocolo para usar su puerto 3000: el puerto personalizado aquí es el enlace: askubuntu.com/questions / 207609 / i-cant-kill-a-port-process
Kaushik shrimali
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

Arayan Singh
fuente
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
Prakash Nagaraj
fuente
8

Utilizar este:

sudo kill -9 $(lsof -t -i:9001)
delpha
fuente
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
Guna Sekaran
fuente
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.

kumbhanibhavesh
fuente
4

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

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

Javad
fuente
3

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

 kill $(lsof -t -i:9001)
arvind
fuente
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
Ranvijay Sachan
fuente
¡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

davidblumer
fuente
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
    
Ratnesh Kushwaha
fuente
1

puedes trabajar esto usando el nodo

npm install freethenport -g

entonces

node freethenport 9001
Adeojo Emmanuel IMM
fuente
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.

Lalit Mohan
fuente
1

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

Armin
fuente
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

Charuka Herath
fuente
-1

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

Albert Davies
fuente