Pregunta ¿Quién está escuchando en un puerto TCP dado en Mac OS X?


En Linux, puedo usar netstat -pntl | grep $PORT o fuser -n tcp $PORT para averiguar qué proceso (PID) está escuchando en el puerto TCP especificado. ¿Cómo obtengo la misma información en Mac OS X?


930
2017-12-12 12:30


origen


Respuestas:


En macOS High Sierra, use este comando:

lsof -nP -i4TCP:$PORT | grep LISTEN

En versiones anteriores, use una de las siguientes formas:

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

Sustituir $PORT con el número de puerto o una lista de números de puerto separados por comas.

Prefijo sudo (seguido de un espacio) si necesita información sobre los puertos a continuación # 1024.

los -n la bandera es para mostrar direcciones IP en lugar de nombres de host. Esto hace que el comando se ejecute mucho más rápido, porque las búsquedas DNS para obtener los nombres de host pueden ser lentas (varios segundos o un minuto para muchos hosts).

los -P la bandera es para mostrar los números de puerto sin formato en lugar de los nombres resueltos como http, ftp o más nombres de servicios esotéricos como dpserve, socalia.

Vea los comentarios para más opciones.


1430
2017-12-12 12:39



También puedes usar:

sudo lsof -i -n -P | grep TCP

Esto funciona en Mavericks.


374
2018-01-22 22:13



Desde Yosemite (10.10), hasta High Sierra (10.13), cada versión de macOS admite esto:

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

341
2018-05-04 12:11



Actualización enero de 2016

Realmente sorprendido de que nadie haya sugerido:

lsof -i :PORT_NUMBER

para obtener la información básica requerida. Por ejemplo, verificar en el puerto 1337:

lsof -i :1337

Otras variaciones, dependiendo de las circunstancias:

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

Puedes construir fácilmente sobre esto para extraer el PID mismo. Por ejemplo:

lsof -t -i :1337

que también es equivalente (en resultado) a este comando:

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

Ilustración rápida:

enter image description here

Para completar, porque se usan con frecuencia juntos:

Para matar el PID:

kill -9 <PID>
# kill -9 60401

o como un trazador de líneas:

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

224
2018-01-07 15:45



Esto funciona en Mavericks (OSX 10.9.2).

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

79
2018-05-12 03:33



en OS X puede usar la opción -v para netstat para dar el pid asociado.

tipo:

netstat -anv | grep [.]PORT

la salida se verá así:

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

El PID es el número antes de la última columna, 3105 para este caso


24
2017-11-03 08:06



En macOS, aquí hay una manera fácil de obtener la identificación del proceso que está escuchando en un puerto específico con netstat. Este ejemplo busca un proceso que sirva contenido en el puerto 80:

encontrar servidor ejecutándose en el puerto 80

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

muestra de salida

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

El 2 ° de la última columna es el PID. En arriba, es 715.

opciones

-a - muestra todos los puertos, incluidos los utilizados por los servidores

-n - Mostrar números, no buscar nombres. Esto hace que el comando sea mucho Más rápido

-v - salida detallada, para obtener las identificaciones del proceso

-w - palabras de búsqueda. De lo contrario, el comando devolverá información para los puertos 8000 y 8001, no solo para "80"

LISTEN - dar información solo para puertos en modo LISTEN, es decir, servidores


19
2018-01-14 22:14