lsof y puertos de escucha

50

Estoy tratando de hacer que todos los procesos escuchen una conexión de red en Mac OS X. netstatNo tengo la -popción y estoy intentando con lsof

lsof -i -sTCP:LISTEN

me da una lista justa de procesos de escucha pero no todos. Puedo, por ejemplo, telnet al puerto 10080 donde tengo un proceso escuchando una conexión, pero esto no se muestra en la salida de lsof. ¿Qué me estoy perdiendo?

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

pero

$ sudo lsof -n -i | grep 10080
$
Matteo
fuente
3
¿La salida de lsof dice en amandalugar de 10080?
Jon Lin
3
@ JonLin No noté que -nsolo afecta a las direcciones y no a los puertos. Para obtener los números de puerto también tengo que usar -P. Gracias
Matteo
3
@ JonLin: pero tienes una publicación lsof -i -sTCP:LISTEN, y sin el -ny tampoco reveló el 10080. Entonces tienes que usar el -P.
Hanan N.

Respuestas:

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

Todos devuelven las mismas 32 entradas ( ... | wc -l) en mi Lion MBP muy usado.

-P -nevita que se lsofhaga resolución de nombres y no se bloquea. Falta cualquiera de estos, puede ser muy lento.

Para UDP: sudo lsof -iUDP -P -n | egrep -v '(127|::1)'. Sin -ny -P, lleva mucho tiempo.

Recordatorio: esto no incluye la configuración del firewall.

Barry A.
fuente
3
Sí, el problema era la falta -P. Supuse erróneamente que se -naplicaba no solo a las direcciones IP sino también a los números de puerto.
Matteo
-1
  1. Primero descubra el Id. De proceso (pid) que ha ocupado el puerto requerido (por ejemplo, 5434):

    ps aux | grep 5434
    
  2. Mata ese proceso:

    kill -9 <pid>
    
Ashutosh Gupta
fuente
55
ps auxno enumera los puertos que utiliza un proceso
Matteo
Estoy de acuerdo con Matteo; ¿estás seguro de que no hiciste algo como netstat -anp | grep 5434 (que devolverá una lista de cosas que está escuchando en 5434, y la primera o segunda columna es el pid?)
Foon
66
Por lo tanto, solo podría funcionar en una situación en la que se llamó a un proceso con un número de puerto dado explícitamente en la cadena de ejecución y esa parte de la cadena coincidiría con grep.
techraf
1
Usar kill -9como primera opción para deshacerse de un proceso es una elección extrema. Además, esto en realidad no responde la pregunta, que no se trata de matar cosas, sino de descubrir qué está funcionando.
lindes