Como você pode descobrir que processo está ouvindo em uma porta TCP ou UDP no Windows?

como pode descobrir que processo está a ouvir numa porta TCP ou UDP no Windows?

Author: Ben Voigt, 2008-09-07

30 answers

Nova resposta, powershell

TCP

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

UDP

Get-Process -Id (Get-NetUDPEndpoint -LocalPort YourPortNumberHere).OwningProcess

Resposta antiga, cmd

 C:\> netstat -a -b

(adicione - n para parar de tentar resolver os nomes das máquinas, o que fará com que seja muito mais rápido.)

Anote a recomendação de Dane paraTCPView . Parece muito útil!

-a mostra todas as ligações e portas de escuta.

-O b mostra o executável envolvido na criação de cada ligação ou porta de escuta. Nalguns casos executáveis bem conhecidos hospedam vários componentes independentes, e nestes casos a seqüência de componentes envolvidos na criação da conexão ou porta de escuta é exibida. Neste caso, o nome executável está em [] na parte inferior, no topo está o componente chamado, e assim por diante até TCP/IP foi alcançado. Note que esta opção pode ser demorada e falhará a menos que tenha permissões suficientes.

-n mostra endereços e números de portas numéricos formulario.

-o mostra o ID do processo de posse associado a cada ligação.

 3005
Author: Brad Wilson, 2020-11-23 10:26:40
Há uma interface nativa para as janelas.
  • menu Iniciar → Todos os ProgramasAcessóriosFerramentas do SistemaMonitor de Recurso

Ou Corre. resmon.exe, ou da página de desempenho do Gestor de Tarefas.

Enter image description here

 2387
Author: bcorso, 2019-11-13 09:32:25

Para As Janelas:

netstat -aon | find /i "listening"
 254
Author: aku, 2019-08-09 20:30:27

Utilize TCPView Se quiser uma interface gráfica para isto. É a antiga aplicação Sysinternals que a Microsoft comprou.

 253
Author: Dane, 2019-11-13 09:21:36

O interruptor-b mencionado na maioria das respostas requer que tenha privilégios administrativos na máquina. Você realmente não precisa de direitos elevados para obter o nome do processo!

Encontre o pid do processo em execução no número da porta (e.g., 8080)

netstat -ano | findStr "8080"

Procurar o nome do processo pelo pid

tasklist /fi "pid eq 2216"

find process by TCP/IP port

 169
Author: Ram Sharma, 2018-07-19 11:24:04

Pode obter mais informações se executar o seguinte comando:

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

A utilização do comando' Find ' permite-lhe filtrar os resultados. find /i "listening" irá mostrar apenas os portos que estão 'a ouvir'. Note, você precisa do {[[2]} para ignorar o caso, caso contrário você iria digitar find "LISTENING". {[3] } limitará os resultados apenas aos que contêm o número de porto específico. Note, sobre isso ele também irá filtrar em resultados que têm o número de porta em qualquer lugar na cadeia de resposta.

 91
Author: Nathan24, 2019-11-13 09:28:57
  1. Abre uma janela de pedido de comandos (como Administrador) a partir do "Start\Search box" indique "cmd" e depois carregue com o botão direito em "cmd.exe "e seleccionar" Executar como Administrador"

  2. Indique o seguinte texto e depois carregue em Enter.

    netstat -abno

    -a mostra todas as ligações e portas de escuta.

    -b mostra o executável envolvido na criação de cada ligação ou porta. Em alguns casos, executáveis bem conhecidos hospedar múltiplos componentes independentes e, nestes casos, sequência de componentes envolvidos na criação da ligação ou a porta de escuta é mostrada. Neste caso, o executável o nome está em [] na parte inferior, no topo está o componente chamado, e assim por diante até o TCP/IP ser alcançado. Note que esta opção pode ser demorado e vai falhar a menos que você tenha suficiente permissao.

    -n Mostra endereços e números de portas em forma numérica.

    -o mostra o ID do processo de posse associado a cada ligação.

  3. Encontre o porto em que está a ouvir em "Endereço Local"

  4. Olhe para o nome do processo diretamente sob isso.

Nota: para encontrar o processo sob o Gestor de Tarefas

  1. Observe o PID (identificador de processo) ao lado do porto que você está olhando.

  2. Abrir As Janelas tarefa.

  3. Seleccione a página processos.

  4. Procura o PID que notaste quando fizeste o netstat no Passo 1.

    • Se não vir uma coluna PID, carregue em ver / seleccionar colunas. Seleccione PID.

    • Certifique-se de" mostrar processos de todos os usuários " é selecionado.

 80
Author: Cyborg, 2017-05-15 02:41:50

Obter o PID e o nome da imagem

Utilize apenas um comando:

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

Em que 9000 deve ser substituído pelo seu número de Porto.

A saída conterá algo como isto:

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

Anotações:

  • Itera através de cada linha a partir do resultado do seguinte comando:

    netstat -aon | findstr 9000
    
  • De cada linha, o PID (%a - o nome não é importante aqui) é extraído (PID é o 5TH elemento nessa linha) e passou para o seguinte comando

    tasklist /FI "PID eq 5312"
    

Se quiser saltar o cabeçalho e o regresso da linha de comandos , pode usar:

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

Resultado:

java.exe                      5312 Services                   0    130,768 K
 59
Author: ROMANIA_engineer, 2016-02-10 17:56:55

Primeiro encontramos o ID do processo dessa tarefa específica que precisamos eliminar para obter o porto livre:

Tipo

netstat -n -a -o

Depois de executar este comando na linha de comandos do Windows (cmd), seleccione o pid que penso ser a última coluna. Suponha que isto é 3312.

Agora tipo

taskkill /F /PID 3312

Agora pode cruzar a verificação digitando o comando netstat.

Nota: às vezes, o Windows não lhe permite executar este comando directamente no CMD, por isso, primeiro precisa para ir com estes passos:

A partir do menu inicial - > linha de comandos (carregue com o botão direito na linha de comandos e execute como Administrador)

 53
Author: Pankaj Pateriya, 2019-11-13 09:35:07

Para obter uma lista de todos os IDs de processo proprietários associados a cada ligação:

netstat -ao |find /i "listening"

Se quiser matar qualquer processo, tenha o ID e use este comando, para que o porto fique livre

Taskkill /F /IM PID of a process
 34
Author: Monis Majeed, 2019-11-13 09:30:59

É muito simples obter o número de porta de um PID no Windows.

Os seguintes passos são:

  1. Go to run → type cmd → press Enter .

  2. Escreva o seguinte comando...

    netstat -aon | findstr [port number]
    

    (Nota: não inclua parêntesis rectos.)

  3. Pressione Entre ...

  4. Em seguida, o cmd lhe dará o detalhe do serviço que corre nessa porta junto com o PID.

  5. Abrir o Gestor de tarefas e carregue na página de serviço e combine o PID com o do cmd, e é tudo.

 30
Author: Nishat Lakhani, 2019-11-13 09:37:59

Para descobrir que processo específico (PID) está a usar Qual porto:

netstat -anon | findstr 1234

Em que 1234 é o PID do teu processo. [Vá ao Gerenciador de Tarefas → página serviços / processos para descobrir o PID de sua aplicação.]

 22
Author: Talha Imam, 2019-11-13 09:46:24

Com o PowerShell 5 no Windows 10 ou no Windows Server 2016, executar Get-NetTCPConnection cmdlet. Eu acho que ele também deve trabalhar em versões mais antigas do Windows.

O resultado por omissão de Get-NetTCPConnection não inclui o ID do processo por alguma razão e é um pouco confuso. No entanto, você sempre poderia obtê-lo formatando a saída. A propriedade que você está procurando é OwningProcess.

  • Se quiser descobrir o ID do processo que está a ouvir na porta 443, execute isto. 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
    
  • Formata o resultado numa tabela com as propriedades que procura:

      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
    
  • Se quiser descobrir o nome do processo, execute 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
    
 22
Author: bahrep, 2020-09-04 10:00:52

Basta abrir uma linha de comandos e digitar (dizendo que a sua porta é 123456):

netstat -a -n -o | find "123456"
Vais ver tudo o que precisas.

Os cabeçalhos são:

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

Isto é como mencionado Aqui.

 19
Author: Tajveer Singh Nijjar, 2019-11-13 09:42:15

Se quiser usar uma ferramenta GUI para fazer isto, existe O TCPView do Sysinternals .

 16
Author: Dave Webb, 2019-11-13 09:21:57

Netstat:

  • - a mostra todas as portas de ligação e de escuta
  • - b mostra executáveis
  • - N parar resolver os nomes das máquinas (formato numérico)
  • - o possuir processo

    netstat -bano | findstr "7002"
    
    netstat -ano > ano.txt 
    

A ferramenta Currports ajuda a procurar e filtrar

 15
Author: Blue Clouds, 2019-11-13 09:45:43
  1. Abre a linha de comandos-start → executarcmd, ou iniciar o menu → Todos os programasAcessórioscomando Prompt .

  2. Tipo

    netstat -aon | findstr '[port_number]'
    

Substitua o [port_number] pelo número de Porto actual que deseja verificar e carregar em indique .

  1. Se o porto estiver a ser usado por qualquer aplicação, então o detalhe dessa aplicação será mostrado. O número, que é indicado na última coluna da list, é o PID (ID do processo) dessa aplicação. Toma nota disto.
  2. Tipo

    tasklist | findstr '[PID]'
    

Substitua o [PID] pelo número do passo acima e carregue em indique .

  1. ser-lhe-á mostrado o nome da aplicação que está a usar o seu número de Porto.
 15
Author: Anatole ABE, 2019-11-13 09:48:53

Escreva o comando: netstat -aon | findstr :DESIRED_PORT_NUMBER

Por exemplo, se eu quiser encontrar porto 80: netstat -aon | findstr :80

Esta resposta foi originalmente postada para esta pergunta.

 14
Author: Technotronic, 2019-11-13 09:40:21

netstat -ao e netstat -ab dizer-lhe a aplicação, mas se você não é um administrador de sistema você vai obter "a operação solicitada requer elevação".

Não é o ideal, mas se você usar Sysinternals ' Process Explorer você pode ir para as propriedades de processos específicos e olhar para a página TCP para ver se eles estão usando o porto que você está interessado. É uma espécie de agulha e Palheiro, mas talvez ajude alguém...

 11
Author: Tony Delroy, 2019-11-13 09:30:25

Eu recomendoCurrPorts do NirSoft.

Os CurrPorts podem filtrar os resultados apresentados. O TCPView não tem esta funcionalidade.

Nota: poderá carregar com o botão direito numa ligação de 'socket' de um processo e seleccionar "Fechar as ligações TCP seleccionadas" (Poderá também fazê-lo em TCPView). Isso muitas vezes corrige problemas de conectividade que eu tenho com Outlook e Lync depois que eu mudar de VPNs. Com CurrPorts, você também pode fechar conexões da linha de comando com o parâmetro "/close".

 10
Author: Josh, 2017-11-02 17:37:31
Uma solução de linha única que me ajuda é esta. Basta substituir 3000 com o seu porto:
$P = Get-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess; Stop-Process $P.Id

Editar: alterado kill para Stop-Process para uma linguagem mais poderosa

 9
Author: Angel Venchev, 2019-12-16 21:27:40

Siga estas ferramentas: de cmd: C:\> netstat -anob com privilégios de administrador .

Explorador Do Processo

Resultado Do Processo

Monitor Do Porto

Todos de sysinternals.com.

Se você só quer saber o processo em execução e tópicos sob cada processo, eu recomendo aprender sobre wmic. É uma ferramenta de linha de comando maravilhosa, que lhe dá muito mais do que você pode saber.

Exemplo:

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

O acima o comando irá mostrar uma lista de todos os processos em breve a cada 5 segundos. Para saber mais, você pode simplesmente ir com o comando /? do windows, por exemplo,

c:\> wmic /?
c:\> wmic process /?
c:\> wmic prcess list /?
E assim por diante. :)
 9
Author: Perl Fanatic, 2020-08-26 19:07:56

Utilizar:

netstat -a -o

Isto mostra o PID do processo a correr numa determinada porta.

Tenha em mente o ID do processo e vá para a Página de gestão de tarefas e serviços ou detalhes e termine o processo que tem o mesmo PID.

Assim você pode matar um processo em execução em uma porta em particular no Windows.

 7
Author: nisha, 2019-11-13 09:27:41

Para aqueles que usam o PowerShell, tente 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
 7
Author: mikemaccana, 2019-11-13 09:39:10
Programaticamente, precisas de coisas do iphlpapi.h , por exemplo Gettcptabe2(). Estruturas como MIB_ TCP6ROW2 contêm o PID do dono.
 6
Author: Michael Chourdakis, 2018-11-05 18:16:10

Usando PowerShell... ...este seria o seu amigo (substitua o 8080 pelo seu número de porto):

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

Saída da amostra

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

Neste exemplo, o cnsnr.o exe (base de dados OracleXE) está a ouvir na porta 8080.

Explicação Rápida

  • Select-String é utilizado para filtrar a saída prolongada de netstat para as linhas relevantes.
  • -Pattern testa cada linha contra uma expressão regular.
  • -Context 0,1 irá produzir 0 linhas principais e uma linha de perseguição para cada padrão.
 6
Author: Jpsy, 2019-11-13 09:43:11

Para encontrar o pid que usa o porto 8000

netstat -aon | findstr '8000'

Para matar esse processo no windows

taskkill /pid pid /f

Onde o pid é o id do processo que obtém o primeiro comando do formulário

 6
Author: jiz, 2020-07-14 06:13:43

Para o Windows, se quiser encontrar coisas a ouvir ou ligadas à porta 1234, execute o seguinte na linha de comandos do cmd:

netstat -na | find "1234"
 3
Author: Zoomzoom, 2017-01-24 21:10:18
No caso de alguém precisar de um equivalente para macOS como eu, aqui está:

lsof -i tcp:8080

Depois de obter o PID do processo, pode matá-lo com:

kill -9 <PID>

 3
Author: Benjamin Wen, 2021-01-30 02:32:14

Use o script abaixo do lote que toma o nome de um processo como argumento e dá netstat saída para o processo.

@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
 2
Author: deshapriya debesh, 2019-11-13 09:45:04