Question Qui écoute sur un port TCP donné sur Mac OS X?


Sur Linux, je peux utiliser netstat -pntl | grep $PORT ou fuser -n tcp $PORT pour savoir quel processus (PID) écoute sur le port TCP spécifié. Comment puis-je obtenir la même information sur Mac OS X?


930
2017-12-12 12:30


origine


Réponses:


Sur macOS High Sierra, utilisez cette commande:

lsof -nP -i4TCP:$PORT | grep LISTEN

Sur les anciennes versions, utilisez l'un des formulaires suivants:

lsof -nP -iTCP:$PORT | grep LISTEN
lsof -nP -i:$PORT | grep LISTEN

Remplacer $PORT avec le numéro de port ou une liste de numéros de port séparés par des virgules.

Préfixer sudo (suivi d'un espace) si vous avez besoin d'informations sur les ports sous # 1024.

le -n L'indicateur sert à afficher les adresses IP au lieu des noms d'hôte. Cela rend la commande s'exécuter beaucoup plus rapidement, car les recherches DNS pour obtenir les noms d'hôte peuvent être lentes (plusieurs secondes ou une minute pour de nombreux hôtes).

le -P flag est pour afficher les numéros de port bruts au lieu de noms résolus comme http, ftp ou plus de noms de services ésotériques comme dpserve, socalia.

Voir les commentaires pour plus d'options.


1430
2017-12-12 12:39



Vous pouvez aussi utiliser:

sudo lsof -i -n -P | grep TCP

Cela fonctionne dans Mavericks.


374
2018-01-22 22:13



Depuis Yosemite (10.10), jusqu'à la haute Sierra (10.13), chaque version de macOS supporte ceci:

sudo lsof -iTCP -sTCP:LISTEN -n -P

341
2018-05-04 12:11



Mise à jour janvier 2016

Vraiment surpris personne n'a suggéré:

lsof -i :PORT_NUMBER

pour obtenir les informations de base requises. Par exemple, vérifier sur le port 1337:

lsof -i :1337

Autres variations, selon les circonstances:

sudo lsof -i :1337
lsof -i tcp:1337

Vous pouvez facilement construire sur ceci pour extraire le PID lui-même. Par exemple:

lsof -t -i :1337

qui est également équivalent (en résultat) à cette commande:

lsof -i :1337 | awk '{ print $2; }' | head -n 2 | grep -v PID

Illustration rapide:

enter image description here

Par souci d'exhaustivité, car fréquemment utilisés ensemble:

Pour tuer le PID:

kill -9 <PID>
# kill -9 60401

ou en un seul paquebot:

kill -9 $(lsof -t -i :1337)

224
2018-01-07 15:45



Cela fonctionne dans Mavericks (OSX 10.9.2).

sudo lsof -nP -iTCP:$PORT -sTCP:LISTEN

79
2018-05-12 03:33



sous OS X, vous pouvez utiliser l'option -v pour que netstat donne le pid associé.

type:

netstat -anv | grep [.]PORT

la sortie ressemblera à ceci:

tcp46      0      0  *.8080                 *.*                    LISTEN      131072 131072   3105      0

Le PID est le nombre avant la dernière colonne, 3105 pour ce cas


24
2017-11-03 08:06



Sur macOS, voici un moyen facile d'obtenir l'ID de processus qui écoute sur un port spécifique avec netstat. Cet exemple recherche un processus servant du contenu sur le port 80:

trouver le serveur fonctionnant sur le port 80

netstat -anv | egrep -w [.]80.*LISTEN

sortie d'échantillon

tcp4  0 0  *.80       *.*    LISTEN      131072 131072    715      0

Le 2ème de la dernière colonne est le PID. En haut, c'est 715.

options

-a - Afficher tous les ports, y compris ceux utilisés par les serveurs

-n - Montrer les numéros, ne cherchez pas les noms. Cela rend la commande lot plus rapide

-v - sortie verbose, pour obtenir les ID de processus

-w - rechercher des mots. Sinon, la commande renverra l'information pour les ports 8000 et 8001, pas seulement "80"

LISTEN - donner des informations uniquement pour les ports en mode LISTEN, c'est-à-dire les serveurs


19
2018-01-14 22:14



Sur Snow Leopard (OS X 10.6.8), l'exécution de 'man lsof' donne:

lsof -i 4 -a

(L'entrée manuelle réelle est 'lsof -i 4 -a -p 1234')

Les réponses précédentes ne fonctionnaient pas sur Snow Leopard, mais j'essayais d'utiliser 'netstat -nlp' jusqu'à ce que je vois l'utilisation de 'lsof' dans la réponse de pts.


12
2017-08-25 19:14



Je suis un gars de Linux. Sous Linux, il est extrêmement facile de netstat -ltpn ou toute combinaison de ces lettres. Mais sous Mac OS X netstat -an | grep LISTEN est le plus humain. D'autres sont très laids et très difficiles à retenir lors du dépannage.


10
2017-08-17 18:57