253 votes

Comment fermer un port ouvert depuis le terminal sur Mac?

J'ai ouvert le port #5955 depuis une classe Java pour communiquer depuis un client. Comment puis-je fermer ce port une fois que j'ai terminé? et aussi quelle commande peut me montrer si le port est ouvert ou fermé?

1 votes

Comment avez-vous ouvert ce port? Il n'est pas clair si vous parlez d'ouvrir et de fermer les ports dans l'application Java ou du pare-feu.

488voto

Future2020 Points 1859
  1. Trouver l'identifiant du 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

46 votes

Envoyer -9 ne devrait pas être la première tentative pour tuer un processus, et c'est une très mauvaise habitude. Comme je m'en souviens, vous devriez d'abord utiliser simplement tuer PID (ce qui implique -15), puis essayer -2 et -1. -9 est le dernier recours seulement si chaque autre option a échoué à fonctionner.

3 votes

A tué pID sans aucun indicateur comme suggéré par @Meow et ça a marché pour moi

73voto

oeste Points 462

Pour trouver le processus, essayez :

sudo lsof -i :numéroDePort

Arrêtez le processus qui utilise actuellement le port à l'aide de son PID

tuer PID

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

tuer -9 PID

Je ferais seulement ce qui suit si le précédent n'a pas fonctionné

sudo tuer -9 PID

Juste pour être sûr. Encore une fois, en fonction de la manière dont vous avez ouvert le port, cela peut ne pas avoir d'importance.

48voto

Gel Sisaed Points 394

EDIT

En 09/2022, cela m'a aidé pour MacOS Monterey M1 Pro Chip :

sudo lsof -t -i tcp:yourPortNumber | sudo xargs kill

En 2018, voici ce qui a fonctionné pour moi avec MacOS High Sierra :

sudo lsof -nPi :yourPortNumber

ensuite :

sudo kill -9 yourPIDnumber

2 votes

lsof -nPi est légèrement mieux car le numéro de port est effectivement visible dans la sortie et vous avez une meilleure idée de ce que vous tuez.

1 votes

Aussi utile juste pour voir toutes les infos des ports d'écoute : sudo lsof -nPi | grep LISTEN

32voto

flik Points 903

Très simple trouver le port 5900:

sudo lsof -i :5900

puis considérant 59553 comme PID

sudo kill 59553

1 votes

Cela n'ajoute rien aux réponses existantes!

30voto

abarnert Points 94246

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

Vous pouvez également simplement tuer le processus qui a ouvert le port.

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

lsof -i :5955

Si vous voulez savoir si un port est ouvert, vous pouvez utiliser la même commande lsof (si un processus l'a ouvert, c'est ouvert; sinon, ce n'est pas le cas), ou vous pouvez simplement essayer de vous y connecter, par exemple :

nc localhost 5955

S'il renvoie immédiatement sans aucune sortie, le port n'est pas ouvert.

Il convient de mentionner que, techniquement parlant, ce n'est pas un port qui est 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 pourriez lier un socket à 127.0.0.1:5955, ou à 10.0.1.2:5955, sans que l'un affecte l'autre, ou vous pourriez lier à 0.0.0.0:5955 pour gérer les deux en même temps. Vous pouvez voir toutes les adresses IPv4 et IPv6 de votre ordinateur avec la commande ifconfig.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X