Comment fermer un port ouvert depuis le terminal sur le Mac?

J’ai ouvert le port n ° 5955 à partir d’une classe Java pour communiquer depuis un client. Comment puis-je fermer ce port après avoir terminé? et aussi quelle commande peut me montrer si le port est ouvert ou fermé?

  1. Découvrez l’ID de processus (PID) qui occupe le numéro de port (par exemple, 5955) que vous souhaitez libérer

    sudo lsof -i :5955 
  2. Tuer le processus qui utilise actuellement le port en utilisant son PID

     sudo kill -9 PID 

Lister les fichiers ouverts sur un port et copier le PID

 lsof -i : 

Tuez-le avec le feu 🙂

 kill -9  

Cependant, vous avez ouvert le port, vous le fermez de la même manière. Par exemple, si vous avez créé un socket, lié au port 0.0.0.0:5955 et appelé listen, fermez ce même socket.

Vous pouvez également simplement tuer le processus dont le port est ouvert.

Si vous voulez savoir quel processus a un port ouvert, essayez ceci:

 lsof -i :5955 

Si vous voulez savoir si un port est ouvert, vous pouvez faire la même commande lsof (si un processus est ouvert, il est ouvert, sinon ce n’est pas le cas) ou vous pouvez simplement essayer de vous y connecter, par exemple:

 nc localhost 5955 

Si elle retourne immédiatement sans sortie, le port n’est pas ouvert.

Il convient de mentionner que, techniquement parlant, ce n’est pas un port ouvert mais une combinaison hôte: port. Par exemple, si vous êtes connecté à un réseau local en tant que 10.0.1.2, vous pouvez lier un socket à 127.0.0.1:5955 ou 10.0.1.2:5955, sans que l’un soit affectant l’autre, ou vous pouvez vous lier à 0.0.0.0. : 5955 pour gérer les deux à la fois. Vous pouvez voir toutes les adresses IPv4 et IPv6 de votre ordinateur avec la commande ifconfig .

Pour trouver le processus, essayez:

 sudo lsof -i :portNumber 

Tuer le processus qui utilise actuellement le port en utilisant son PID

 kill PID 

puis vérifiez si le port est fermé. Sinon, essayez:

 kill -9 PID 

Je ne ferais que ce qui suit si le précédent ne fonctionnait pas

 sudo kill -9 PID 

Juste pour être sûr. Encore une fois, selon la manière dont vous avez ouvert le port, cela n’a pas d’importance.

J’utilise lsof combiné avec kill , comme mentionné ci-dessus; mais a écrit un petit script bash pour automatiser ce processus.

Avec ce script, vous pouvez simplement taper killport 3000 partir de n’importe où et cela va tuer tous les processus exécutés sur le port 3000 .

https://github.com/xtrasimplicity/killport

Vous pouvez également utiliser cette première commande pour supprimer un processus possédant un port particulier:

 sudo netstat -ap | grep : 

Par exemple, supposons que ce processus contienne le port TCP 8000 , puis exécute la commande:

 sudo netstat -ap | grep :8000 

affichera la ligne correspondant au processus contenant le port 8000 , par exemple:

 tcp 0 0 *:8000 *:* LISTEN 4683/procHoldingPort 

Dans ce cas, procHoldingPort est le nom du processus qui a ouvert le port, 4683 est son pid et 8000 (notez qu’il s’agit de TCP) est le numéro de port qu’il contient (que vous souhaitez fermer).

Ensuite, tuez le processus, en suivant l’exemple ci-dessus:

 kill 4683 

Comme d’autres l’ont mentionné ci-dessus, si cela ne fonctionne pas (vous pouvez essayer d’utiliser kill avec -9 comme argument):

 kill -9 4683 

Encore une fois, en général, il vaut mieux éviter d’envoyer SIGKILL (-9) si possible.

À votre santé,

Gars.

Lorsque le programme qui a ouvert le port se ferme, le port sera automatiquement fermé. Si vous tuez le processus Java exécutant ce serveur, cela devrait le faire.

  1. Commencez par trouver l’identifiant de procees (pid) qui a occupé le port requirejs (par exemple, 5434).

    ps aux | grep 5434

2.kill ce processus

  kill -9