Comment tuer un processus sur un port sur Ubuntu

488

J'essaie de tuer un processus dans la ligne de commande pour un port spécifique dans ubuntu.

Si j'exécute cette commande, j'obtiens le port:

sudo lsof -t -i:9001

alors ... maintenant je veux courir:

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

Je reçois ce message d'erreur:

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.

J'ai essayé sudo kill 'lsof -t -i:9001'aussi

Tampa
la source
9
Pour info, les questions sur Ubuntu ont plus de chances d'être répondues sur la partie Ubuntu du réseau StackExchange (StackOverflow): askubuntu.com
JScoobyCed

Réponses:

900

Vous souhaitez utiliser le backtick et non le tick régulier:

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

Si cela ne fonctionne pas, vous pouvez également utiliser $()pour l'interpolation de commande:

sudo kill -9 $(sudo lsof -t -i:9001)
zellio
la source
43
Vous avez oublié d'ajouter l'option de signal. Devrait lire:sudo kill -9 $(sudo lsof -t -i:9001)
Francesco Gramano
7
@FrancescoGramano: vous ne voulez pas utiliser -9 sauf si vous le devez.
zellio
2
quand sudo killne peut pas tuer le processus, la méthode de @ putra.koreng fonctionne bien
Fangxin
3
si ci-dessus ne fonctionne pas, essayez ceci: stackoverflow.com/a/50515868/9339242
Arayan Singh
1
Cet OS est-il indépendant ou spécifique à Linux? Si elle est spécifique à Linux, même cette commande fonctionneos.system("fuser -k 8080/tcp");
Ridhuvarshan
78

POUR UBUNTU 1- Trouvez quelle application / processus utilise le pro, tapez:

sudo netstat -lpn |grep :8080

et appuyez sur Entrée.

Vous obtiendrez une sortie similaire à celle-ci

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

2- J'ai l'ID de processus, qui est 6782, maintenant c'est le processus qui utilise le port 8080.

3- Tuez le processus, tapez: kill 6782

kill 6782
Mohit Singh
la source
3
Réponse courte et
nette
1
Fonctionne parfaitement
Tyler Bell
Pourriez-vous s'il vous plaît écrire comment vous utilisez la commande ci-dessus?
Mohit Singh
1
Fonctionne tout simplement génial alors que les commandes dans asnwers avec plus de votes positifs sont introuvables sur mon serveur Ubuntu 18.04. Merci!
Salivan
38

La meilleure façon de tuer un port dans le terminal Ubuntu est fuser -k 9001/tcp

Vishnu S Babu
la source
3
A parfaitement fonctionné pour moi
Rencontrez Zaveri
Il a travaillé pour moi aussi. Ce devrait être la réponse acceptée.
CodeSlave
35

Il existe certains processus qui ne s'affichent pas à l'aide de la commande netstat normale, vous devez donc le vérifier en utilisant sudo .

Faites sudo netstat -lpn |grep :8080. Le processus exécuté par le système n'affiche pas le PID, pour obtenir le PID de ce processus, vous devrez l'exécuter en utilisantsudo

Et puis tuez le processus en utilisant le port 8080. Vous devrez peut-être également l'utiliser sudoici. Donc, pour tuer ce processus, utilisezsudo kill -9 PID

User16119012
la source
19

Utilisez la commande killport :

sh killport 9001 

Pour télécharger le shell, vous pouvez utiliser wget:

wget https://cdn.rawgit.com/abdennour/miscs.sh/e0aac343/killport
Abdennour TOUMI
la source
1
si cela ne fonctionne pas, cela signifie que le port cible est déjà fermé
Abdennour TOUMI
18

Pour tuer sur le service de port dans Ubuntu, entrez la commande ci-dessous dans le terminal

Dans le terminal:

sudo fuser -k port/tcp
sudo fuser -k 8001/tcp
Abhishek-Saini
la source
Ce simple fait très bien.
Tri
15

Vous pouvez également utiliser l'unité de fusion pour ce faire (envoie SIGKILL par défaut): sudo fuser -k 9001/tcp

Dmitriusan
la source
15

entrez simplement

    fuser -k -n tcp 3000

dans le terminal, où 3000 est votre numéro de port

Sai Kumar
la source
1
using fuser: affichez quels processus utilisent les fichiers, sockets ou systèmes de fichiers nommés -k: représente un kill -n: tcp Netstat: c'est un protocole pour utiliser votre port 3000: le port personnalisé est le lien: askubuntu.com/questions / 207609 / Processus i-cant-kill-a-port
Kaushik shrimali
12

Pour tuer un processus exécuté sur le numéro de port9001

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).

pour plus vous pouvez visiter mon blog

Arayan Singh
la source
11

Pour tuer le processus basé sur le port, nous devons d'abord trouver le pid approprié pour le port donné et tuer en utilisant ce pid,

Dans mon cas, je voulais obtenir le pid (identifiant de processus) du port 3000:

netstat -ltnp | grep -w '3000'

puis trouvez pid qui écoute tcp

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

vous obtiendrez le pid 29972

Pour tuer ce pid, utilisez la commande ci-dessous

kill -9 29972

pseudo-code pour le processus de suppression basé sur le port

 netstat -ltnp | grep -w 'PORT'

et

kill -9 PID
Prakash Nagaraj
la source
8

Utilisez ceci:

sudo kill -9 $(lsof -t -i:9001)
delpha
la source
5

Tuez PORT:

sudo est important d'afficher l'ID du processus.

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

$ kill -9 45136
Guna Sekaran
la source
5

Utilisez la commande

 netstat -plten |grep java

utilisé grep java comme tomcat utilise java comme processus.

Il affichera la liste des processus avec le numéro de port et l'identifiant du processus

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

le nombre avant / java est un identifiant de processus. Utilisez maintenant la commande kill pour tuer le processus

kill -9 16085

-9 implique que le processus sera tué avec force.

kumbhanibhavesh
la source
4

sudo fuser -n tcp -k [numéro_port]

sudo lsof -t -i: [numéro_port]

Javad
la source
3

Utilisez-le pour tuer le processus qui s'exécute sur le numéro de port "9001"

 kill $(lsof -t -i:9001)
arvind
la source
Redondant avec d'autres exemples, y compris la réponse acceptée.
Kenster
3

Essaye ça:

lsof -i :port

or 

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

or

kill -9 <pid>

or 

sh killport 8000
Ranvijay Sachan
la source
Je suis sur Ubuntu 17 et kill -9 <pid>a très bien fonctionné pour moi!
protoEvangelion
1
sudo kill `sudo lsof -t -i:9001`

vous n'avez pas besoin d'ajouter l' -9option de signal

davidblumer
la source
1

Son processus en deux étapes:

  1. Connaître l'identifiant du processus sur le port no. 8080 (peut être n'importe lequel)
  2. Tuer le processus de cet identifiant 8689 (peut être différent)

    fuser -n tcp 8080
    
    #o/p 8080/tcp    8689
    
    kill -9 8689
    
Ratnesh Kushwaha
la source
1

vous pouvez travailler cela en utilisant le nœud

npm install freethenport -g

puis

node freethenport 9001
Adeojo Emmanuel IMM
la source
1

Affiche les connexions TCP actives, les ports sur lesquels l'ordinateur écoute.

netstat -tupln

Il vous listera toute la connexion le long de pid. Recherchez et copiez le pid et exécutez la commande suivante. Assurez-vous de remplacer l'id réel par la commande suivante.

kill -9 <copied pid>

-9 à utiliser pour couper la connexion avec force.

Lalit Mohan
la source
1

Essayez de sudo fuser PORT/tcp -k remplacer PORTpar le port que vous souhaitez tuer, par exemple80

Armin
la source
0

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

peut être utilisé pour tuer le processus. Vous pouvez utiliser n'importe quel numéro de port au lieu de 9001

Charuka Herath
la source
-1

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

Albert Davies
la source