GNU/Linux >> Tutoriels Linux >  >> Linux

Tuer le processus en cours d'exécution sur le port 80

Il existe plusieurs façons de trouver quel processus en cours d'exécution utilise un port.

En utilisant fuser, il donnera le ou les PID des multiples instances associées au port d'écoute.

sudo apt-get install psmisc
sudo fuser 80/tcp

80/tcp:               1858  1867  1868  1869  1871

Après l'avoir découvert, vous pouvez soit arrêter, soit tuer le ou les processus.

Vous pouvez également trouver les PID et plus de détails en utilisant lsof

sudo lsof -i tcp:80

COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME  
nginx   1858     root    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1867 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1868 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1869 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1871 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  

Pour limiter aux sockets qui écoutent sur le port 80 (par opposition aux clients qui se connectent au port 80) :

sudo lsof -i tcp:80 -s tcp:listen

Pour les tuer automatiquement :

sudo lsof -t -i tcp:80 -s tcp:listen | sudo xargs kill

Voici un oneliner qui montre la commande à lancer :

echo kill $(sudo netstat -anp | awk '/ LISTEN / {if($4 ~ ":80$") { gsub("/.*","",$7); print $7; exit } }')

Remplacer echo par sudo pour que le processus soit réellement tué.


Trois options pour lister les ports ouverts sont proposées dans le whatisonport de jsh :

netstat -anp --numeric-ports | grep ":${PORT}\>.*:" 

fuser -v "${PORT}"/tcp

lsof -P -S 2 -i "tcp:${PORT}" | grep "\(:${PORT}->.*:\|:$PORT (LISTEN)$\)"

Je préfère netstat car il est rapide, concis et peut répertorier les ports ouverts par d'autres utilisateurs. (Bien qu'il aura toujours besoin de privilèges de superutilisateur/utilisateur pour répertorier les noms et les PID de ces processus.)

Sorties

$ netstat -anp --numeric-ports | grep ":80\>.*:" 
tcp6       0      0 :::80           :::*            LISTEN      1914/apache2    

$ fuser -v "80/tcp"
                     USER        PID ACCESS COMMAND
80/tcp:              root       1914 F.... apache2
                     www-data  12418 F.... apache2
...

$ lsof -P -S 2 -i "tcp:80" | grep "\(:80->.*:\|:80 (LISTEN)$\)"
apache2  1914     root    4u  IPv6   11920      0t0  TCP *:80 (LISTEN)
apache2 12418 www-data    4u  IPv6   11920      0t0  TCP *:80 (LISTEN)
...

L'utilisation de grep dans deux cas est de faire correspondre uniquement le port du côté local et d'ignorer les connexions ouvertes vers un port distant 80. (Une alternative serait d'utiliser -l avec netstat , ou avec lsof utiliser -sTCP:LISTEN , mais j'aime les greps ci-dessus car ils intercepteront également les sortants connexions de le port donné, ce qui peut parfois être intéressant.)

Avec lsof nous utilisons -P pour afficher :80 au lieu de :http pour rendre le grep possible. Le -S 2 l'option force lsof à terminer en temps opportun.

Tuer le processus

En supposant que nous voulons utiliser netstat , nous pourrions récupérer les PID comme ceci :

$ netstat -anp --numeric-ports | grep ":80\>.*:" | grep -o "[0-9]*/" | sed 's+/$++'
1914
...

Et nous pourrions même transmettre ces PID à kill :

... | xargs -d '\n' kill -KILL

Cependant, il existe souvent un risque de faux positif lors de l'utilisation d'expressions régulières, je vous recommande donc de simplement regarder la sortie initiale de netstat puis en décidant manuellement d'exécuter ou non :

$ kill -KILL 1914

Voir aussi

J'ai un autre script appelé listopenports qui peuvent être intéressants.


Linux
  1. Comment tuer un processus exécuté sur un port spécifique sous Linux ?

  2. kill Exemples de commandes sous Linux

  3. Comment tuer un processus en cours d'exécution sur un port particulier sous Linux ?

  4. Existe-t-il un moyen d'écouter le processus ?

  5. Trouver le PID du processus utilisant un port spécifique ?

Comment tuer un processus sous Linux

Commande Kill sous Linux

Comment trouver et tuer les processus en cours d'exécution sous Linux

Comment tuer le processus Linux en cours d'exécution sur un port particulier

Comment tuer un processus sous Linux

Processus en cours d'exécution