web-dev-qa-db-fra.com

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

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

netstat -XXX | grep 8080
26
timpone

Malheureusement, sous OSX, vous êtes bloqué par la variable BSD netstat qui ne vous montrera pas l'ID de processus associé à un port donné. Ce que vous devez faire à la place est d'utiliser lsof. La syntaxe à utiliser est la suivante:

lsof -i :8080

Cela affichera une foule 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 me dit que le port 53237 est utilisé par l'ID de processus 927. Lors de la lecture du champ COMMAND, n'oubliez pas que cette sortie est tronquée. En réalité, le nom complet du fichier binaire est GoogleTalkPlugin.

52
Scott Pack

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

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

Des informations complémentaires sont disponibles dans les pages de manuel.

8
CDSU

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

5
Sean Hamilton

Pour moi, les deux lignes suivantes fonctionnent le mieux pour indiquer quelles applications ont des ports d’écoute ouverts et un tunnel:

netstat -Watn | grep LISTEN
lsof -Pnl +M -i -cmd | grep LISTEN
4
Tomachi

Pour connaître les ports spécifiques, utilisez la commande netstat ci-dessous.

  netstat -an | grep ':8080'

De l'homme netstat

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

D'habitude je fais juste ça: netstat -antup | grep 8080

1
Hermes Conrad

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'
0
suhas