lsof et ports d'écoute

50

J'essaie de faire en sorte que tous les processus soient à l'écoute d'une connexion réseau sous Mac OS X. Je n'ai netstatpas l' -poption et j'essaie avec lsof

lsof -i -sTCP:LISTEN

me donne une bonne liste de processus d’écoute, mais pas tous. Par exemple, je peux utiliser telnet sur le port 10080 pour lequel un processus écoute une connexion, mais cela ne figure pas dans la sortie de lsof. Qu'est-ce que je rate?

$ telnet localhost 10080
Trying ::1...
Connected to localhost.
Escape character is '^]'.
^]
telnet> Connection closed.

mais

$ sudo lsof -n -i | grep 10080
$
Matteo
la source
3
Est-ce que la sortie de lsof dit amandaau lieu de 10080?
Jon Lin
3
@JonLin Je n'ai pas remarqué que la -nseule incidence concerne les adresses et pas les ports. Pour obtenir les numéros de port , je dois -Paussi utiliser . Merci
Matteo
3
@JonLin: mais vous avez posté lsof -i -sTCP:LISTEN, et sans le -net il n'a pas révélé le 10080 aussi. Donc, vous devez utiliser le -P.
Hanan N.

Réponses:

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

Tous renvoient les mêmes 32 entrées ( ... | wc -l) sur mon très utilisé Lion MBP.

-P -nempêche lsofde faire la résolution de nom, et il ne bloque pas. Si vous manquez l'un ou l'autre, cela peut être très lent.

Pour UDP: sudo lsof -iUDP -P -n | egrep -v '(127|::1)'. Sans -net -P, cela prend beaucoup de temps.

Rappel: Cela n'inclut pas les paramètres du pare-feu.

Barry A.
la source
3
Oui, le problème était les disparus -P. J'ai supposé à tort qu'il -ns'appliquait non seulement aux adresses IP, mais également aux numéros de port.
Matteo
-1
  1. Commencez par trouver l'identifiant du processus (pid) ayant occupé le port requis (par exemple, 5434):

    ps aux | grep 5434
    
  2. Tuez ce processus:

    kill -9 <pid>
    
Ashutosh Gupta
la source
5
ps auxne répertorie pas les ports utilisés par un processus
Matteo
Je suis d'accord avec Matteo. êtes-vous sûr de ne pas avoir fait quelque chose comme netstat -anp | grep 5434 (qui retournera une liste de contenus écoutés sur 5434, et la première ou deuxième colonne est le pid?)
Foon
6
Ainsi, ne pouvait fonctionner que dans une situation où un processus était appelé avec un numéro de port donné explicitement dans la chaîne d'exécution et où cette partie de la chaîne serait assortie par grep.
Techraf
1
Utiliser kill -9comme première option pour se débarrasser d'un processus est un choix extrême. En outre, cela ne répond pas réellement à la question, qui ne consiste pas à tuer des choses, mais à savoir ce qui se passe.
lindes