Comment utiliser netstat pour montrer quel processus écoute sur un port

27

Je suis sur un ordinateur portable OS X Mountain Lion et j'ai quelques boîtes Vagrant dessus. J'essaie de comprendre quel processus écoute sur le port 8080. Mes variations produisent comme une centaine de lignes mais aucune avec un numéro de port spécifique. Je suppose quelque chose comme:

netstat -XXX | grep 8080
timpone
la source
Est-ce dans un environnement familial ou professionnel?
Lucas Kauffman
bien, recréer un environnement de serveur localement. si vous voulez passer à un autre site, ça va. Différentes versions de netstat prennent en charge différents arguments.
timpone
Bon alors monsieur, tout semble en ordre ici, continuez et passez une bonne journée.
Lucas Kauffman

Réponses:

52

Malheureusement, sur OSX, vous êtes coincé avec le BSD netstatqui ne vous montrera pas l'ID de processus attaché à un port donné. Ce que vous devez faire, c'est utiliser lsof. La syntaxe que vous devrez utiliser est:

lsof -i :8080

Cela imprimera des quantités d'informations, dont la plupart ne vous intéressent pas, mais les champs sont bien étiquetés. Par exemple, consultez cet exemple de sortie.

lsof -i :53237
COMMAND   PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
GoogleTal 927 guest   29u  IPv4 0x2c3f7f95244855c3      0t0  TCP localhost:53237 (LISTEN)

Cela m'indique que le port 53237 est utilisé par l'ID de processus 927. Lorsque vous lisez le champ COMMAND, gardez à l'esprit que cette sortie est tronquée, en réalité le nom complet du binaire est GoogleTalkPlugin.

Scott Pack
la source
thx, cela me rapproche beaucoup plus, ça va être assez générique VBoxHeadl- y a-t-il un moyen de voir quelle instance VirtualBox (en avoir deux en ce moment) ou est-ce que je demande beaucoup trop (probablement ce dernier). thx
timpone
@timpone: Je ne connais pas suffisamment VirtualBox pour vous aider dans cette voie. Vous pouvez vérifier la ligne de commande du processus pour voir s'il y figure, ou utiliser lsof -p PIDet parcourir la liste des fichiers ouverts jusqu'à ce que vous la trouviez.
Scott Pack
cool, merci pour l'aide
timpone
8

C'est ce que j'aime utiliser lors de la recherche du PID d'un port d'écoute. Pour une utilisation Linux:netstat -tunlp

  • n réseau
  • l ports d'écoute
  • processus p
  • t tcp
  • u udp

Des informations supplémentaires peuvent être trouvées dans les pages de manuel.

CDSU
la source
-pne répertorie pas les arguments du programme. Comment est-ce que je vois ça?
jameshfisher
4
OP a posé des questions sur OSX. -p n'est pas une option sur la version OSX de netstat.
Ted Bigham
-psur OSX est port. Je déteste les décisions des développeurs de faire des arguments différents pour OSX et Linux ...
Daniel W.
5

J'étais en train de modifier netstatsur OS X pour fournir cette fonctionnalité et je suis tombé sur le fait que -vcela vous donnera le pid associé à une socket.

Sean Hamilton
la source
Le -vaugmente le niveau de verbosité et il est documenté. developer.apple.com/library/mac/documentation/Darwin/Reference/…
Leathe
1
désolé, je voulais dire le fait qu'il imprime le PID n'est pas documenté, pas que l'option existe.
Sean Hamilton
4

Pour moi, les deux lignes suivantes fonctionnent mieux pour montrer quelles applications ont des ports d'écoute ouverts et tunnel, lsof est entièrement multiplateforme:

netstat -Watn | grep LISTEN
lsof -Pnl +M -i -cmd | grep LISTEN
Tomachi
la source
1

Pour découvrir un port spécifique, utilisez la commande netstat ci-dessous

  netstat -an | grep ':8080'

la source
3
OP a demandé comment obtenir le processus. Cela ne montre pas l'ID du processus.
Ted Bigham
1

De l'homme netstat

-p, --program Affiche le PID et le nom du programme auquel appartient chaque socket.

Je fais habituellement juste ceci: netstat -antup | grep 8080

Hermes Conrad
la source
hmm ... cela ressemble à ce que j'aimerais mais cela me donne différentes options sur OS X pour -p-p protocol Show statistics about protocol, which is either a well-known name
timpone
@timpone: L' -paffichage du PID est une commande GNU netstat tandis que OSX utilise BSD netstat.
Scott Pack
-pne répertorie pas les arguments du programme. Comment est-ce que je vois ça?
jameshfisher
1
OP a posé des questions sur OSX. -p n'est pas une option sur la version OSX de netstat.
Ted Bigham
-psur OSX est port. Je déteste les décisions des développeurs de faire des arguments différents pour OSX et Linux ...
Daniel W.
0

La commande ci-dessous montre la connexion:

netstat -antop | grep :8080

Pour visualiser le flux complet en temps réel, vous pouvez utiliser watch:

watch -d -t -n 1 'lsof -n -i :8080'
suhas
la source