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.
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.
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).
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.).
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
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,
Donc, vous pouvez maintenant facilement tuer votre PID en utilisant la commande suivante:
Sudo kill -9 <PID>
Ici,
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
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)
}
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
essayez comme ça,
Sudo fuser -n tcp -k 8080
Obtenez le PID de la tâche et tuez-la.
lsof -ti:8080 | xargs kill
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
lsof -i tcp:8000
Cette commande répertorie les informations sur le processus en cours d'exécution sur le port 8000.
kill -9 [PID]
Cette commande tue le processus
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.
kill -9 `fuser 8080/tcp|xargs -n 1`
, cette commande tue également le processus qui écoute sur le port 8080 avec la connexion TCP
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.
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
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
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
}
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é