Pregunta

¿Cómo puede saber qué proceso está escuchando en un puerto en Windows?

¿Fue útil?

Solución

Potencia Shell

Get-Process -Id (Get-NetTCPConnection -LocalPort portNumber).OwningProcess

cmd

 C:\> netstat -a -b

(Agregar -norte para evitar que intente resolver nombres de host, lo que lo hará mucho más rápido).

Tenga en cuenta la recomendación de Dane para TCPVer.¡Parece muy útil!

-a Muestra todas las conexiones y puertos de escucha.

-b Muestra el ejecutable involucrado en la creación de cada conexión o puerto de escucha.En algunos casos, los ejecutables conocidos alojan múltiples componentes independientes y, en estos casos, se muestra la secuencia de componentes involucrados en la creación de la conexión o el puerto de escucha.En este caso, el nombre del ejecutable está en [] en la parte inferior, arriba está el componente al que llamó, y así sucesivamente hasta llegar a TCP/IP.Tenga en cuenta que esta opción puede llevar mucho tiempo y fallará a menos que tenga permisos suficientes.

-norte Muestra direcciones y números de puerto en forma numérica.

-o Muestra el ID del proceso propietario asociado con cada conexión.

Otros consejos

Hay una GUI nativa para Windows:

  • Inicio>>Todos los programas>>Accesorios>>Herramientas del sistema>>Monitor de recursos

o Correr resmon.exe, o de Administrador de tareas pestaña de rendimiento

enter image description here

Usar TCPVer si quieres una GUI para esto.Es la antigua aplicación Sysinternals que Microsoft compró.

netstat -aon | find /i "listening"

El modificador -b mencionado en la mayoría de las respuestas requiere que tenga privilegios administrativos en la máquina.¡Realmente no necesitas derechos elevados para obtener el nombre del proceso!

Encuentre el pid del proceso que se ejecuta en el número de puerto (por ejemplo, 8080)

netstat -ano | findStr "8080"

Encuentra el nombre del proceso por pid

tasklist /fi "pid eq 2216"

find process by TCP/IP port

Puede obtener más información si ejecuta el siguiente comando:

netstat -aon |find /i "listening" |find "port"

El uso del comando 'Buscar' le permite filtrar los resultados.find /i "escuchando" mostrará sólo los puertos que están 'Escuchando'.Tenga en cuenta que necesita /i para ignorar Case; de ​​lo contrario, escribiría buscar "ESCUCHA".|find "port" limitará los resultados sólo a aquellos que contengan el número de puerto específico.Tenga en cuenta que esto también filtrará los resultados que tengan el número de puerto en cualquier parte de la cadena de respuesta.

  1. Abra una ventana del símbolo del sistema (como administrador) Desde "Inicio\Cuadro de búsqueda", ingrese "cmd", luego haga clic derecho en "cmd.exe" y seleccione "Ejecutar como administrador".

  2. Ingrese el siguiente texto y luego presione Enter.

    netstat -abno

    -a Muestra todas las conexiones y puertos de escucha.

    -b Muestra el ejecutable involucrado en la creación de cada conexión o puerto de escucha.En algunos casos, los ejecutables bien conocidos alojan múltiples componentes independientes, y en estos casos se muestra la secuencia de componentes involucrados en la creación de la conexión o el puerto de escucha.En este caso, el nombre ejecutable está en [] en la parte inferior, en la parte superior está el componente que llamó, y así sucesivamente hasta que se alcanzó TCP/IP.Tenga en cuenta que esta opción puede llevar mucho tiempo y fallará a menos que tenga permisos suficientes.

    -norte Muestra direcciones y números de puerto en forma numérica.

    -o Muestra el ID del proceso propietario asociado con cada conexión.

  3. Busque el puerto en el que está escuchando en "Dirección local"

  4. Mire el nombre del proceso directamente debajo de eso.

NOTA:Para encontrar el proceso en el Administrador de tareas

  1. Tenga en cuenta el PID (identificador de proceso) al lado del puerto que está mirando.

  2. Abra el Administrador de tareas de Windows.

  3. Seleccione la pestaña Procesos.

  4. Busque el PID que anotó cuando realizó netstat en el paso 1.

    • Si no ve una columna PID, haga clic en Ver/Seleccionar columnas.Seleccione PID.

    • Asegúrese de que esté seleccionado "Mostrar procesos de todos los usuarios".

Obtener PID y nombre de imagen

Utilice sólo un comando:

for /f "tokens=5" %a in ('netstat -aon ^| findstr 9000') do tasklist /FI "PID eq %a"

dónde 9000 debe ser reemplazado por su número de puerto.

El producción contendrá algo como esto:

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
java.exe                      5312 Services                   0    130,768 K

Explicación:

  • itera a través de cada línea desde la salida del siguiente comando:

    netstat -aon | findstr 9000
    
  • de cada línea, el PID (%a - el nombre no es importante aquí) se extrae (PID es el 5th elemento en esa línea) y pasado al siguiente comando

    tasklist /FI "PID eq 5312"
    

Si quieres saltar el encabezamiento y el regreso del símbolo del sistema, puedes usar:

echo off & (for /f "tokens=5" %a in ('netstat -aon ^| findstr 9000') do tasklist /NH /FI "PID eq %a") & echo on

Producción:

java.exe                      5312 Services                   0    130,768 K

Primero encontramos la identificación del proceso de esa tarea en particular que debemos eliminar para liberar el puerto.

tipo
netstat -n -a -o

Después de ejecutar este comando en el indicador de la línea de comando de Windows (CMD), seleccione el PID que creo que la última columna supone que esto es 3312

Ahora escribe

tareakill /F /PID 3312

Ahora puede realizar una verificación cruzada escribiendo el comando netstat.

NOTA:A veces, Windows no le permite ejecutar este comando directamente en CMD, por lo que primero debe ir con estos pasos desde el símbolo de inicio-> del sistema (haga clic derecho en el símbolo del sistema y ejecute como administrador)

Es muy sencillo obtener el número de puerto de pid en Windows.

Los siguientes son los pasos:

1) Vaya a ejecutar --> escriba cmd --> presione enter.

2) escribe el siguiente comando...

netstat -aon | findstr [port number]

(Nota:No incluya corchetes).

3) presione enter...

4) Luego cmd le dará los detalles del servicio que se ejecuta en ese puerto junto con pid.

5) Abra el administrador de tareas y presione la pestaña de servicio y haga coincidir el pid con el del cmd y listo.

Para obtener una lista de todos los ID de proceso propietarios asociados con cada conexión:

netstat -ao |find /i "listening"

Si desea eliminar algún proceso, tenga la identificación y use este comando, para que el puerto quede libre

Taskkill /F /IM pidof a process

Simplemente abra un shell de comandos y escriba:(diciendo que su puerto es 123456)

netstat -a -n -o | find "123456"

Verás todo lo que necesitas

Los encabezados son:

 Proto  Local Address          Foreign Address        State           PID
 TCP    0.0.0.0:37             0.0.0.0:0              LISTENING       1111

esto es como se mencionó aquí

Si desea utilizar una herramienta GUI para hacer esto, existe SysInternals TCPView.

Con PowerShell 5 en Windows 10 o Windows Server 2016, ejecute Get-NetTCPConnection cmdlet.Supongo que también debería funcionar en versiones anteriores de Windows.

La salida predeterminada de Get-NetTCPConnection no incluye ID de proceso por algún motivo y es un poco confuso.Sin embargo, siempre puedes obtenerlo formateando la salida.La propiedad que buscas es OwningProcess.

  • Si desea conocer el ID del proceso que escucha en el puerto 443, ejecute este comando:

    PS C:\> Get-NetTCPConnection -LocalPort 443 | Format-List
    
    LocalAddress   : ::
    LocalPort      : 443
    RemoteAddress  : ::
    RemotePort     : 0
    State          : Listen
    AppliedSetting :
    OwningProcess  : 4572
    CreationTime   : 02.11.2016 21:55:43
    OffloadState   : InHost
    
  • Formatee la salida en una tabla con las propiedades que busca:

    PS C:\> Get-NetTCPConnection -LocalPort 443 | Format-Table -Property LocalAddress, LocalPort, State, OwningProcess
    
    LocalAddress LocalPort  State OwningProcess
    ------------ ---------  ----- -------------
    ::                 443 Listen          4572
    0.0.0.0            443 Listen          4572
    
  • Si desea averiguar el nombre del proceso, ejecute este comando:

    PS C:\> Get-Process -Id (Get-NetTCPConnection -LocalPort 443).OwningProcess
    
    Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
    -------  ------    -----      -----     ------     --  -- -----------
    143      15     3448      11024              4572   0 VisualSVNServer
    

Para saber qué proceso específico (PID) está utilizando qué puerto:

netstat -anon | findstr 1234

Donde 1234 es el PID de su proceso.[Vaya al Administrador de tareas -> pestaña Servicios/Procesos para conocer el PID de su aplicación]

netstat -ao y netstat -ab le indicará la aplicación, pero si no es administrador obtendrá "La operación solicitada requiere elevación".

No es ideal, pero si usa sysinternals Process Explorer puede ir a las propiedades de procesos específicos y mirar la pestaña TCP para ver si están usando el puerto que le interesa.Un poco como una aguja y un pajar, pero tal vez ayude a alguien...

Escriba el comando: netstat -aon | findstr :DESIRED_PORT_NUMBER

Por ejemplo, si quiero encontrar el puerto 80: netstat -aon | findstr :80

Esta respuesta fue publicada originalmente en este hilo.

recomiendo Puertos actuales de NirSoft.

CurrPorts puede filtrar los resultados mostrados. TCPVer no tiene esta característica.

Nota:Puede hacer clic derecho en la conexión de socket de un proceso y seleccionar "Cerrar conexiones TCP seleccionadas" (también puede hacer esto en TCPView).Esto suele solucionar los problemas de conectividad que tengo con Outlook y Lync después de cambiar de VPN.Con CurrPorts, también puedes cerrar conexiones desde la línea de comando con el parámetro "/close".

Netstat

  • -a muestra todos los puertos de conexión y escucha
  • -b muestra ejecutables
  • -n dejar de resolver nombres de host (forma numérica)
  • -o proceso de propiedad

    netstat -bano | Findstr "7002"

    netstat -ano > ano.txt

Corrientes herramienta ayuda a buscar y filtrar

Siga estas herramientas: - Desde cmd :- C:\> netstat -anob con Administrador privilegio.

http://technet.microsoft.com/en-us/sysinternals/bb896653 - Explorador de procesos

http://technet.microsoft.com/en-us/sysinternals/bb896645 - Volcado de proceso

http://technet.microsoft.com/en-us/sysinternals/bb896644 - Monitor de puerto

Todo desde sysinternals.com

Si solo desea conocer el proceso en ejecución y los subprocesos de cada proceso, le recomiendo aprender sobre wmic.Maravillosa herramienta de línea cmd, que te brinda mucho más de lo que puedes saber.

Ejemplo:-

c:\> wmic process list brief /every:5

El comando anterior mostrará toda la lista de procesos brevemente cada 5 segundos.Para saber más, puedes ir con /? comando de windows, por ejemplo,

c:\>wmic /?
c:\>wmic process /?
c:\>wmic prcess list /?

y así sucesivamente y así sucesivamente.:)

netstat -a -o Esto muestra el PID del proceso que se ejecuta en un puerto en particular.

Tenga en cuenta la identificación del proceso y vaya al Administrador de tareas y servicios o pestaña de detalles y finalice el proceso que tiene el mismo PID.

Por lo tanto, puede finalizar un proceso que se ejecuta en un puerto particular en Windows.

Para aquellos que usan Powershell, intente Get-NetworkStatistics:

> Get-NetworkStatistics | where Localport -eq 8000


ComputerName  : DESKTOP-JL59SC6
Protocol      : TCP
LocalAddress  : 0.0.0.0
LocalPort     : 8000
RemoteAddress : 0.0.0.0
RemotePort    : 0
State         : LISTENING
ProcessName   : node
PID           : 11552

Usando PowerShell...
...este sería tu amigo (reemplaza 8080 con tu número de puerto):

 netstat -abno | Select-String -Context 0,1 -Pattern 8080

Salida de muestra

>   TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING         2920
   [tnslsnr.exe]
>   TCP    [::]:8080              [::]:0                 LISTENING         2920
   [tnslsnr.exe]

Entonces, en este ejemplo, tnslsnr.exe (base de datos OracleXE) está escuchando en el puerto 8080.

Explicación rápida
Select-String se utiliza para filtrar la salida larga de netstat para las líneas correspondientes.
-Pattern prueba cada línea con una expresión regular.
-Context 0,1 generará 0 líneas iniciales y 1 línea final para cada coincidencia de patrón.

Programáticamente, necesitas cosas de iphlpapi.h, Por ejemplo ObtenerTcpTable2().Estructuras como MIB_TCP6ROW2 contiene el PID del propietario.

Una solución de línea única que me ayuda es esta, simplemente sustituye 3000 por tu puerto.

$P = Get-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess; kill $P.Id

  1. Abre el command prompt - start » run » cmd or start » All Programs » Accessories » Command Prompt.

  2. Tipo

    netstat -aon | findstr '[port_number]'

Reemplace [número_puerto] con el número de puerto real que desea verificar y presione Intro.

  1. Si alguna aplicación está utilizando el puerto, se mostrarán los detalles de esa aplicación.El número, que se muestra en la última columna de la lista, es el PID (ID de proceso) de esa aplicación.Toma nota de esto.
  2. Tipo

    tasklist | findstr '[PID]'

Reemplace el [PID] con el número del paso anterior y presione Enter.

  1. Se le mostrará el nombre de la aplicación que utiliza su número de puerto.

Para Windows, si desea encontrar elementos escuchando o conectados al puerto 1234, ejecute lo siguiente en el símbolo del cmd:

netstat -na | find "1234"

Utilice el siguiente script por lotes que toma un nombre de proceso como argumento y proporciona un resultado netstat para el proceso.

@echo off
set procName=%1
for /f "tokens=2 delims=," %%F in ('tasklist /nh /fi "imagename eq %1" /fo csv') do call :Foo %%~F
goto End

:Foo
set z=%1
echo netstat for : "%procName%" which had pid "%1"
echo ----------------------------------------------------------------------

netstat -ano |findstr %z%
goto :eof

:End
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top