Comment tuer un processus tournant sur un port particulier de Linux?
j'ai essayé de fermer le tomcat en utilisant ./shutdown.sh
du répertoire /bin
de tomcat. Mais il a constaté que le serveur n'était pas correctement fermé. Et donc je n'ai pas pu redémarrer
mon tomcat tourne sur le port 8080
.
je veux tuer le processus tomcat qui tourne sur 8080
. Je veux d'abord avoir la liste des processus tournant sur un port spécifique (8080) afin de sélectionner le processus à tuer.
16 réponses
ce fuser 8080/tcp
vous imprimera PID de processus lié sur ce port.
et ce fuser -k 8080/tcp
tuera ce processus.
fonctionne sur Linux seulement. Plus universel est l'utilisation de lsof -i4
(ou 6 pour IPv6).
pour lister n'importe quel processus écoutant le port 8080:
lsof -i:8080
Pour tuer tous les processus de l'écoute sur 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 List of Kill Signals et Quel est le but de l'option -9 dans la commande kill? . Si aucun signal n'est spécifié pour kill
, le TERME de signal.k.un. -15
ou soft kill
est envoyé, ce qui n'est pas assez pour tuer un processus.).
utiliser la commande
sudo netstat -plten |grep java
utilise grep java
comme tomcat
utilise java
comme leurs procédés.
il affichera la liste des processus avec le numéro de port et le numéro de processus
tcp6 0 0 :::8080 :::* LISTEN
1000 30070621 16085/java
le numéro avant /java
est un numéro de processus. Maintenant, utilisez la commande kill
pour tuer le processus
kill -9 16085
-9
implique que le processus sera tué avec force.
Vous pouvez utiliser la commande lsof. Laissez le numéro de port comme ici est 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, tuer le processus en l'utilisant (le numéro du processus est 75782) ...
kill -9 75782
celui-ci travaillait pour moi. voici le lien de l'original post: lien
j'ajouterais cette doublure pour écouter uniquement sur un port spécifique:
kill -9 $(lsof -t -i:3000 -sTCP:LISTEN)
si vous voulez tuer un processus tournant sur le numéro de port 8080, vous devez d'abord trouver le numéro d'identification du processus de port 8080(PID) et ensuite le tuer. Exécutez la commande suivante pour trouver le numéro de port 8080 PID:
sudo lsof -t -i:8080
ici,
- sudo - commande pour demander le privilège admin(id utilisateur et mot de passe).
- lsof - liste des fichiers procédés connexes)
- - t - afficher seulement le numéro D'identification du procédé
- - i - afficher seulement les connexions internet processus lié
- :8080 - afficher seulement les processus dans ce numéro de port
ainsi vous pouvez maintenant facilement tuer votre PID en utilisant la commande suivante:
sudo kill -9 <PID>
ici,
- tuez - commande de tuer le processus
- -9-avec vigueur
vous pouvez utiliser une commande pour tuer un processus sur un port spécifique en utilisant la commande suivante:
sudo kill -9 $(sudo lsof -t -i:8080)
pour plus vous pouvez voir le lien suivant Comment tuer un processus sur un port spécifique de linux
cela imprime pour stdout les ids de processus de tout ce qui fonctionne sur <port_number>
:
fuser -n tcp <port_number>
Il imprime aussi des trucs à stderr, donc:
fuser -n tcp <port_number> 2> /dev/null
nous pouvons ensuite fournir ces codes 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 beaucoup:
function killport() {
sudo kill $(fuser -n tcp 2> /dev/null)
}
pour connaître le pid de service courant 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és.
E. g
netstat -ap | grep :8080
tcp6 0 0 :::8080 :::* LISTEN 1880/java
Maintenant:
kill -9 1880
N'oubliez pas d'exécuter toutes les commandes comme root
-
lsof -i tcp:8000
Cette commande LISTE les informations sur le processus en cours d'exécution dans 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
procédé de mise à mort.
Linux : tout D'abord, vous pouvez trouver 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 mise à mort. exécutez la commande suivante:
kill -9 PID
Expample: -
kill -9 15986
kill -9 `fuser 8080/tcp|xargs -n 1`
, cette commande tue également le processus qui écoute sur le port 8080 avec connexion TCP
pour construire sur ce que @ veer7 a dit:
si vous voulez savoir ce qu'il y avait 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 rapporté
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
kill -9 1858
dans Windows, il sera netstat -ano | grep "8080"
et nous obtenons le message suivant TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 10076
nous pouvons tuer le PID en utilisant taskkill /F /PID 10076