¿Cómo puede saber qué proceso está escuchando en un puerto TCP o UDP en Windows?
Frecuentes
Visto 3,842 veces
2590
¿Cómo puede saber qué proceso está escuchando en un puerto TCP o UDP en Windows?
30 Respuestas
3016
Nueva respuesta, powershell
TCP
Get-Process -Id (Get-NetTCPConnection -LocalPort YourPortNumberHere).OwningProcess
UDP
Get-Process -Id (Get-NetUDPEndpoint -LocalPort YourPortNumberHere).OwningProcess
Respuesta anterior, cmd
C:\> netstat -a -b
(Agregar -n 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 TCPView. ¡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 albergan varios 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, en la parte superior está el componente al que llamó, y así sucesivamente hasta que se alcance TCP / IP. Tenga en cuenta que esta opción puede llevar mucho tiempo y fallará a menos que tenga los permisos necesarios.
-n Muestra direcciones y números de puerto en forma numérica.
-o Muestra el ID del proceso propietario asociado con cada conexión.
respondido 23 nov., 20:10
y taskkill / PID para luego terminar el proceso, usando / F si es apropiado. - BitMask777
Es posible que deba ejecutar su shell de línea de comandos como administrador, de lo contrario, puede recibir un mensaje de error sobre privilegios insuficientes. Utilice la opción "Ejecutar como administrador" al hacer clic con el botón derecho en cmd.exe. - Gruber
Funciona pero requiere un permiso elevado. Mayús + clic derecho en el icono de comando -> ejecutar como administrador - Cristian Bongiorno
Habiendo obtenido el PID, digamos que es 1234
- entonces puedes usar tasklist /fi "pid eq 1234"
para averiguar el nombre y otros detalles del proceso. - Steve Cámaras
@RodionSychev El comando de powershell espera que reemplace "portNumber" con el número de puerto que está buscando. El error indica que "portNumber" no es un número. - MattOG
2400
Hay una GUI nativa para Windows:
- Menú de inicio → todos los programas → Accesorios → Herramientas del sistema → Monitor de recursos
Or Corral resmon.exe
, o de Administrador de tareas pestaña de rendimiento.
respondido 13 nov., 19:09
También muestra el estado del firewall del enlace (última columna). Muy util. - Rafael
Debe ser administrador (o pertenecer a ese grupo) para ejecutar esto. - KrishPrabakar
@bcorso, ¿Qué vincula a "dirección no especificada"¿significa? - marcapasos
También se puede iniciar desde la pestaña Rendimiento del Administrador de tareas, al menos en Windows 10. (No he verificado otras versiones). Mathieu K.
El comentario de @ user4836454 anterior NO es correcto: Resource Monitor SÍ muestra puertos con oyentes, incluso si no hay conexión de red a estos puertos. Basta con mirar la sección "Puertos de escucha" en lugar de la sección "Conexiones TCP". - Jpsy
257
Para Windows:
netstat -aon | find /i "listening"
Respondido 09 ago 19, 21:08
+1 Pero tenga en cuenta que si su Windows se ejecuta en un idioma que no sea inglés, tendrá que cambiar "escuchar" al término nativo. P.ej netstat -aon | find /i "abhören"
para alemán. - Levita
En mi caso no funcionó tal vez debido al signo de comillas, pero la solución netstat -aon | findtr LISTENING funciona perfectamente! - El Padrino
Esto funciona sin requerir privilegios elevados por lo que se votó a favor. - Vlad Schnakovszki
Recibo un error al intentar ejecutar este comando en W10 15063.729 con PowerShell: FIND: Parameter format not correct
- Nicke Manarín
¿Qué importancia tiene esta respuesta para "averiguar qué proceso [nombre] está escuchando en un puerto de Windows?" - Pawel Cioch
255
Utiliza TCPView si quieres una GUI para esto. Es el viejo sysinternals aplicación que compró Microsoft.
respondido 13 nov., 19:09
En mi opinión, esta es la mejor opción, especialmente porque todos los procesos están en la misma lista y puede cerrar los procesos directamente haciendo clic derecho en ellos. - andreas lundgren
Además, ¡esto no requiere privilegios de administrador! - Janac Meena
170
El modificador -b mencionado en la mayoría de las respuestas requiere que tenga privilegios administrativos en la máquina. ¡Realmente no necesita 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"
Respondido 19 Jul 18, 12:07
92
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 "listening"
mostrará solo los puertos que están 'escuchando'. Tenga en cuenta que necesita el /i
para ignorar las mayúsculas y minúsculas, de lo contrario, debería escribir find "LISTENING". | find "port"
limitará los resultados a aquellos que contengan el número de puerto específico. Tenga en cuenta que en esto también filtrará los resultados que tengan el número de puerto en cualquier lugar de la cadena de respuesta.
respondido 13 nov., 19:09
FWIW al intentar ejecutar esto en PowerShell v2.0 produce un error FIND: Parameter format not correct
. Debe agregar un espacio después de los criterios de búsqueda. Esto te dejará con netstat -aon | find /i "listening" | find "1234 "
. - uno mismo.
Reemplace "puerto" arriba con su puerto, ex "5000" - jbooker
@uno mismo. Sigo recibiendo ese error con PS 5.1, incluso después de agregar el espacio después de la tubería. ¿Sabes lo que está pasando? - Nicke Manarín
@NickeManarinin & @self primero cambian de powershell a cmd (simplemente escriba cmd y presione enter y luego rehaga el comando) o en powershell use este comando en su lugar: netstat -aon | find / i "{back tick}
"escuchando{back tick}
"" | buscar "{back tick}
"Puerto{back tick}
"" (<- observe las comillas de escape - disculpe el término back tick
ya que no puedo agregar el personaje real ya que cree que es un recorte) - Tristán van Dam
81
Abra una ventana del símbolo del sistema (como administrador) Desde "Inicio \ Cuadro de búsqueda" Ingrese "cmd", luego haga clic con el botón derecho en "cmd.exe" y seleccione "Ejecutar como administrador"
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 conocidos albergan varios 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, en la parte superior está el componente al que llamó, y así sucesivamente hasta que se alcance TCP / IP. Tenga en cuenta que esta opción puede llevar mucho tiempo y fallará a menos que tenga los permisos necesarios.
-n Muestra direcciones y números de puerto en forma numérica.
-o Muestra el ID del proceso propietario asociado con cada conexión.
Busque el puerto en el que está escuchando en "Dirección local"
Mire el nombre del proceso directamente debajo de eso.
NOTA: Para encontrar el proceso en el Administrador de tareas
Tenga en cuenta el PID (identificador de proceso) junto al puerto que está mirando.
Abra el Administrador de tareas de Windows.
Seleccione la pestaña Procesos.
Busque el PID que anotó cuando hizo el netstat en el paso 1.
Si no ve una columna PID, haga clic en Ver / Seleccionar columnas. Seleccione PID.
Asegúrese de que la opción "Mostrar procesos de todos los usuarios" esté seleccionada.
contestado el 15 de mayo de 17 a las 03:05
59
Obtener PID y nombre de imagen
Use solo un comando:
for /f "tokens=5" %a in ('netstat -aon ^| findstr 9000') do tasklist /FI "PID eq %a"
sin que importe 9000
debe ser reemplazado por su número de puerto.
La salida 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 el5
th elemento en esa línea) y pasado al siguiente comandotasklist /FI "PID eq 5312"
Si deseas omitir el encabezamiento y el regreso de la 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
Salida:
java.exe 5312 Services 0 130,768 K
Respondido 10 Feb 16, 17:02
Buena respuesta, pero deberías cambiarla afindstr :9000
de lo contrario, incluso encontrará aplicaciones que contengan el número (por ejemplo, cuando busque "80", también encontrará aplicaciones en el puerto 80, 800, 8000). - Radón8472
53
Primero encontramos el ID de proceso de esa tarea en particular que necesitamos eliminar para liberar el puerto:
Tipo
netstat -n -a -o
Después de ejecutar este comando en la línea de comandos de Windows (cmd), seleccione el pid que creo que es la última columna. Suponga que es 3312.
Ahora escribe
taskkill /F /PID 3312
Ahora puede realizar una verificación cruzada escribiendo el netstat
mando.
NOTA: a veces Windows no le permite ejecutar este comando directamente en CMD, por lo que primero debe seguir estos pasos:
Desde el menú de inicio -> símbolo del sistema (haga clic con el botón derecho en el símbolo del sistema y ejecútelo como administrador)
respondido 13 nov., 19:09
34
Para obtener una lista de todos los ID de proceso de propiedad asociados con cada conexión:
netstat -ao |find /i "listening"
Si desea matar algún proceso, tenga la ID y use este comando, para que el puerto quede libre
Taskkill /F /IM PID of a process
respondido 13 nov., 19:09
esto no tiene en cuenta los puertos UDP de escucha - Evandrix
30
Es muy sencillo obtener el número de puerto de un PID en Windows.
Los siguientes son los pasos:
Vaya a ejecutar → escriba cmd → presione Enviar.
Escribe el siguiente comando ...
netstat -aon | findstr [port number]
(Nota: no incluya corchetes).
Prensa Enviar...
Luego, cmd le dará los detalles del servicio que se ejecuta en ese puerto junto con el PID.
Abra el Administrador de tareas y presione la pestaña de servicio y haga coincidir el PID con el del cmd, y eso es todo.
respondido 13 nov., 19:09
22
Para saber qué proceso específico (PID) está usando qué puerto:
netstat -anon | findstr 1234
Donde 1234 es el PID de su proceso. [Vaya a Administrador de tareas → pestaña Servicios / Procesos para averiguar el PID de su aplicación].
respondido 13 nov., 19:09
Cabe señalar que no necesita el -n
bandera colocada dos veces. -ano
es suficiente. - mwieczorek
22
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 alguna razón y es un poco confuso. Sin embargo, siempre puede obtenerlo formateando la salida. La propiedad que busca es OwningProcess
.
Si desea averiguar el ID del proceso que está escuchando 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
Respondido el 04 de Septiembre de 20 a las 11:09
19
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í.
respondido 13 nov., 19:09
FYI / para cualquier persona interesada: es findstr 123456
(sin comillas) o find "123456"
(con comillas). (@Josh) - kevin cruijssen
16
Si desea utilizar una herramienta GUI para hacer esto, hay TCPView de Sysinternals.
respondido 13 nov., 19:09
15
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
La Pasarelas ayuda a buscar y filtrar
respondido 13 nov., 19:09
15
Abra el símbolo del sistema - Inicio → Corral →
cmd
, o menú de inicio → todos los programas → Accesorios → Símbolo del sistema.Tipo
netstat -aon | findstr '[port_number]'
Vuelva a colocar la [port_number]
con el número de puerto real que desea verificar y presione Enviar.
- Si alguna aplicación está utilizando el puerto, se mostrará el detalle 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.
Tipo
tasklist | findstr '[PID]'
Vuelva a colocar la [PID]
con el número del paso anterior y presione Enviar.
- Se le mostrará el nombre de la aplicación que está usando su número de puerto.
respondido 13 nov., 19:09
En Win 10: su comando en el paso 2 y el paso 4 no funciona a menos que reemplace comillas simples por comillas dobles. Debería decir netstat -aon | Findstr "[número_puerto]" - Leonardo lopez
Esta solución no requiere un permiso elevado. ¡Tks! - totalmente
14
Escribe el comando: netstat -aon | findstr :DESIRED_PORT_NUMBER
Por ejemplo, si quiero encontrar el puerto 80: netstat -aon | findstr :80
Esta respuesta se publicó originalmente en esta pregunta.
respondido 13 nov., 19:09
11
netstat -ao
y netstat -ab
le indicará la aplicación, pero si no es un administrador del sistema, 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. Es una especie de aguja y pajar, pero tal vez ayude a alguien ...
respondido 13 nov., 19:09
Si no es un administrador, no podrá usar el Explorador de procesos (o incluso el Administrador de tareas de Windows> Administrador de recursos) para obtener esta información de cualquier proceso que no sea suyo para empezar. - Abel
10
Recomiendo CurrPorts de NirSoft.
CurrPorts puede filtrar los resultados mostrados. TCPView no tiene esta característica.
Nota: Puede hacer clic con el botón derecho en la conexión de socket de un proceso y seleccionar "Cerrar conexiones TCP seleccionadas" (también puede hacer esto en TCPView). Esto a menudo soluciona problemas de conectividad que tengo con Outlook y Lync después de cambiar de VPN. Con CurrPorts, también puede cerrar conexiones desde la línea de comando con el parámetro "/ close".
respondido 02 nov., 17:17
9
Una solución de una sola línea que me ayuda es esta. Simplemente sustituya 3000 con su puerto:
$P = Get-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess; Stop-Process $P.Id
Editar: cambiado kill
a Stop-Process
para más lenguaje similar a PowerShell
Respondido el 16 de diciembre de 19 a las 21:12
Probablemente no desee eliminar el proceso automáticamente. Separaría ese comando de matar y lo explicaría. No quiero que un usuario pobre copie y pegue eso sin pensarlo detenidamente. - TinkerTenorSoftwareChico
Y si opta por la solución completa de PowerShell, cambie kill a Stop-Process Get-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess | Stop-Process
- CubanoX
9
Siga estas herramientas: Desde cmd: C:\> netstat -anob
con Administrador privilegios.
Todo de sysinternals.com.
Si solo desea conocer el proceso en ejecución y los subprocesos de cada proceso, le recomiendo aprender sobre wmic
. Es una maravillosa herramienta de línea de comandos, que le brinda mucho más de lo que puede saber.
Ejemplo:
c:\> wmic process list brief /every:5
El comando anterior mostrará una lista de todos los procesos en breve 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. :)
Respondido 26 ago 20, 20:08
PortMon (el enlace detrás de Port Monitor) es para monitorear de serie y paralelo puertos, no puertos de red. - James
7
Uso:
netstat -a -o
Esto muestra el PID del proceso que se ejecuta en un puerto en particular.
Tenga en cuenta el ID del proceso y vaya al Administrador de tareas y a la pestaña de servicios o detalles y finalice el proceso que tiene el mismo PID.
Por lo tanto, puede matar un proceso que se ejecuta en un puerto en particular en Windows.
respondido 13 nov., 19:09
7
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
respondido 13 nov., 19:09
6
Programáticamente, necesitas cosas de iphlpapi.h, Por ejemplo ObtenerTcpTable2(). Estructuras como MIB_TCP6ROW2 contienen el PID del propietario.
respondido 05 nov., 18:18
6
Uso de PowerShell ... ... este sería su amigo (reemplace 8080 con su 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.
Explicacion rapida
Select-String
se utiliza para filtrar la salida larga denetstat
para las líneas relevantes.-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.
respondido 13 nov., 19:09
6
Para encontrar pid que usa el puerto 8000
netstat -aon | findstr '8000'
Para matar ese proceso en Windows
taskkill /pid pid /f
donde pid es la identificación del proceso que obtienes desde el primer comando
Respondido 14 Jul 20, 07:07
netstat -aon | Findstr 8000. No es necesario el signo de comillas. - Ali Rasouli
PID es el valor devuelto por el primer comando en la última columna. - Pran Kumar Sarkar
3
Para Windows, si desea encontrar cosas escuchando o conectadas al puerto 1234, ejecute lo siguiente en el indicador de cmd:
netstat -na | find "1234"
Respondido el 24 de enero de 17 a las 21:01
3
En caso de que alguien necesite un equivalente para macOS como yo, aquí está:
lsof -i tcp:8080
Después de obtener el PID
del proceso, puede matarlo con:
kill -9 <PID>
Respondido el 30 de enero de 21 a las 02:01
2
Utilice el siguiente script por lotes que toma un nombre de proceso como argumento y proporciona netstat
salida 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
respondido 13 nov., 19:09
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas windows networking port or haz tu propia pregunta.
Currports es una herramienta que ayuda a buscar + filtrar también nirsoft.net/utils/cports.html - Blue Clouds
Me encontré con esto mientras intentaba ejecutar Tomcat en modo de depuración bajo IntelliJ, la mejor solución para mí resultó ser cambiar la configuración de transporte de depuración (Archivo-> Configuración-> Construir / exe / implementar-> Depurador) de "socket" a "memoria compartida". - TMN
netstat -aof | findstr :8080
(Cambie 8080 para cualquier puerto) - David Jesus@DavidJesus no muestra el proceso en Windows 10. - Smit Johnth