web-dev-qa-db-fra.com

Comment tuer un processus s'exécutant sur un port particulier sous Linux?

J'ai essayé de fermer Tomcat en utilisant ./shutdown.sh à partir du répertoire Tomcat /bin. Mais constaté que le serveur n'a pas été fermé correctement. Et donc je n'ai pas pu redémarrer
Mon Tomcat fonctionne sur le port 8080.

Je veux tuer le processus Tomcat exécuté sur 8080. Je veux d’abord avoir la liste des processus en cours d’exécution sur un port spécifique (8080) afin de sélectionner le processus à supprimer.

482
veer7

Utilisez la commande

 Sudo netstat -plten |grep Java

utilisé grep Java comme Tomcat utilise Java en tant que processus.

Il montrera 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 précédant /Java est un identifiant de processus. Maintenant, utilisez la commande kill pour tuer le processus

kill -9 16085

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

213
veer7

Ce fuser 8080/tcp vous imprimera le PID du processus lié à ce port.

Et ce fuser -k 8080/tcp va tuer ce processus.

Fonctionne sous Linux uniquement. Plus universel est l'utilisation de lsof -i4 (ou 6 pour IPv6). 

690
nudzo

Pour répertorier tout processus écoutant le port 8080:

lsof -i:8080

Pour tuer tout processus écoutant le port 8080:

kill $(lsof -t -i:8080)

ou plus violemment:

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

(-9 correspond au signal SIGKILL - terminate immediately/hard kill: voir Liste des signaux Kill et Quel est le but de l'option -9 dans la commande kill? . Si aucun signal n'est spécifié à kill, le signal TERM, également appelé -15 ou soft kill est envoyé, ce qui n'est parfois pas suffisant pour tuer un processus.).

432
Franck Dernoncourt

Vous pouvez utiliser la commande lsof . Laissez le numéro de port comme ici 8090

lsof -i:8090

Cette commande renvoie une liste des processus ouverts sur ce port.

Quelque chose comme…

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ssh 75782 eoin 5u IPv6 0x01c1c234 0t0 TCP localhost:8090 (LISTEN)

Pour libérer le port, tuez le processus en l'utilisant (l'identifiant du processus est 75782)…

kill -9 75782

Celui-ci a fonctionné pour moi . Voici le lien de l'article original: link

97
Kop4lyf

Si vous souhaitez supprimer un processus exécuté sur le numéro de port 8080, vous devez d'abord rechercher le numéro d'identification du processus du port 8080, puis le supprimer. Exécutez la commande suivante pour rechercher le PID du numéro de port 8080:

Sudo lsof -t -i:8080

Ici,

  • Sudo - commande demandant le privilège administrateur (identifiant et mot de passe).
  • lsof - liste de fichiers (également utilisé pour lister les processus associés)
  • -t - Afficher uniquement l'ID de processus
  • -i - affiche uniquement le processus lié aux connexions Internet
  • : 8080 - Afficher uniquement les processus dans ce numéro de port

Donc, vous pouvez maintenant facilement tuer votre PID en utilisant la commande suivante:

Sudo kill -9 <PID>

Ici,

  • kill - commande pour tuer le processus
  • -9 - avec force

Vous pouvez utiliser une commande pour tuer un processus sur un port spécifique à l'aide de la commande suivante:

Sudo kill -9 $(Sudo lsof -t -i:8080)

Pour plus d’informations, vous pouvez voir le lien suivant Comment tuer un processus sur un port spécifique sous Linux

56
mahfuz110244

Ceci affiche sur stdout les identifiants de processus de tout ce qui tourne sur <port_number>

fuser -n tcp <port_number> 

Il imprime aussi des trucs sur stderr, donc:

fuser -n tcp <port_number> 2> /dev/null

Nous pouvons ensuite fournir ces identifiants de processus à la commande kill:

Sudo kill $(fuser -n tcp <port_number> 2> /dev/null)

Vous pouvez aussi mettre cela dans une fonction si vous le faites souvent:

function killport() {
    Sudo kill $(fuser -n tcp $1 2> /dev/null)
}
36
Brian Peterson

Pour connaître le pid du service exécuté sur un port particulier:

netstat -tulnap | grep :*port_num*

vous obtiendrez la description de ce processus. Maintenant, utilisez kill ou kill -9 pid. Facilement tué.

par exemple

netstat -ap | grep :8080

tcp6       0      0 :::8080       :::*    LISTEN      1880/Java 

À présent:

kill -9 1880

N'oubliez pas d'exécuter toutes les commandes en tant que root

31
Sanjay s.

essayez comme ça,

 Sudo fuser -n tcp -k 8080
17
Adil Abbasi

Obtenez le PID de la tâche et tuez-la.

lsof -ti:8080 | xargs kill
12
Rahul Garg

Linux : Tout d'abord, vous pouvez trouver le PID de cette commande si vous connaissez le port:

netstat -tulpn 

exemple:-

 Local Address  Foreign Address  State    PID/Program name

  :::3000       :::*             LISTEN    15986/node 

Vous prenez alors le processus de tuer. lancez la commande suivante:

tuer -9 PID

Expample: - 

tuer -9 15986

11
Kundan Kumar
  1. lsof -i tcp:8000 Cette commande répertorie les informations sur le processus en cours d'exécution sur le port 8000.

  2. kill -9 [PID] Cette commande tue le processus

11
Nandhitha Ramaraj

Linux : Vous pouvez utiliser cette commande si vous connaissez le port:

netstat -plten | grep LISTEN | grep 8080

AIX

netstat -Aan | grep LISTEN | grep 8080

Vous prenez ensuite la première colonne (exemple: f100050000b05bb8) et exécutez la commande suivante:

rmsock f100050000b05bb8 tcpcb

tuer le processus.

9
ben rhouma moez

kill -9 `fuser 8080/tcp|xargs -n 1`, cette commande tue également le processus qui écoute sur le port 8080 avec la connexion TCP

6
Harshit Garg

Vous pouvez connaître la liste de tous les ports exécutant dans le système avec ses détails (pid, adresse, etc.):

netstat -tulpn

Vous pouvez connaître les détails d'un numéro de port particulier en fournissant le numéro de port dans la commande suivante:

Sudo netstat -lutnp | grep -w '{port_number}'

ex: Sudo netstat -lutnp | grep -w '8080' Les détails seront fournis comme ceci:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name

si vous voulez tuer un processus en utilisant pid, alors : kill -9 {PID}

si vous voulez tuer un processus en utilisant le numéro de port : fuser -n tcp {port_number}

utilisez Sudo si vous ne pouvez pas y accéder.

4
YAP

Choisissez le numéro de port et appliquez la commande grep dans la commande netstat comme indiqué ci-dessous

netstat -ap | grep :7070

Sortie de la console

tcp 0 0 ::: 7070 ::: * ÉCOUTER 3332/Java

Tuer le service basé sur PID (numéro d'identification du processus)

kill -9 3332
4
Lova Chittumuri
Sudo apt-get install psmisc (or Sudo yum install psmisc)
Sudo fuser 80/tcp

Résultat: 80/tcp: 1858 1867 1868 1869 1871

Tuer le processus un par un

tuer -9 1858 

1
Fadid

Autre moyen avec Git Bash:

stopProcessByPortNumber() {
port=":${1}"
portStrLine="$(netstat -ano | findstr LISTENING | findstr $port)"
processId="$(grep -oP '(\d+)(?!.*\d)' <<< $portStrLine)"
echo $processId
taskkill -PID $processId -F
}
0

pour construire ce que @ veer7 a dit: 

si vous voulez savoir ce qui était sur le port, faites-le avant de le tuer.

$ Sudo netstat -plten |grep Java
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      1000       906726      25296/Java      
tcp6       0      0 :::8009                 :::*                    LISTEN      1000       907503      25296/Java      
tcp6       0      0 :::8080                 :::*                    LISTEN      1000       907499      25296/Java      
$ ps 25296
  PID TTY      STAT   TIME COMMAND
25296 ?        Sl     0:16 /usr/lib/jvm/Java-8-openjdk-AMD64/bin/Java -Dcatalina.base=/hom

Utilisez 'ps' et le numéro du processus que netstat a renvoyé

0
JesseBoyd