Pergunta

Como você pode descobrir qual processo está escutando em uma porta no Windows?

Foi útil?

Solução

PowerShell

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

cmd

 C:\> netstat -a -b

(Adicionar -n para impedi-lo de tentar resolver nomes de host, o que tornará tudo muito mais rápido.)

Observe a recomendação de Dane para Visualização TCP.Parece muito útil!

-a Exibe todas as conexões e portas de escuta.

-b Exibe o executável envolvido na criação de cada conexão ou porta de escuta.Em alguns casos, executáveis ​​bem conhecidos hospedam vários componentes independentes e, nesses casos, a sequência de componentes envolvidos na criação da conexão ou porta de escuta é exibida.Neste caso o nome do executável está em [] na parte inferior, na parte superior está o componente que ele chamou e assim por diante até que o TCP/IP seja alcançado.Observe que esta opção pode ser demorada e falhará, a menos que você tenha permissões suficientes.

-n Exibe endereços e números de porta em formato numérico.

-o Exibe o ID do processo proprietário associado a cada conexão.

Outras dicas

Existe uma GUI nativa para Windows:

  • Iniciar>>Todos os Programas>>Acessórios>>Ferramentas do Sistema>>Monitor de Recursos

ou Correr resmon.exe, ou de Gerenciador de tarefas guia desempenho

enter image description here

Usar Visualização TCP se você quiser uma GUI para isso.É o antigo aplicativo Sysinternals que a Microsoft comprou.

netstat -aon | find /i "listening"

A opção -b mencionada na maioria das respostas exige que você 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 (por exemplo, 8080)

netstat -ano | findStr "8080"

Encontre o nome do processo por pid

tasklist /fi "pid eq 2216"

find process by TCP/IP port

Você pode obter mais informações se executar o seguinte comando:

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

usar o comando 'Localizar' permite filtrar os resultados.find /i "listening" exibirá apenas as portas que estão 'Listening'.Observe que você precisa de /i para ignorar Case, caso contrário você digitaria find "LISTENING".|find "port" limitará os resultados apenas àqueles que contêm o número da porta específico.Observe que isso também filtrará os resultados que possuem o número da porta em qualquer lugar da string de resposta.

  1. Abra uma janela de prompt de comando (como administrador) Em "Iniciar caixa de pesquisa" Digite "cmd", clique com o botão direito em "cmd.exe" e selecione "Executar como administrador"

  2. Digite o seguinte texto e pressione Enter.

    netstat -abno

    -a Exibe todas as conexões e portas de escuta.

    -b Exibe o executável envolvido na criação de cada conexão ou porta de escuta.Em alguns casos, executáveis ​​conhecidos hospedam vários componentes independentes e, nesses casos, a sequência de componentes envolvidos na criação da conexão ou porta de escuta é exibida.Nesse caso, o nome executável está em [] na parte inferior, na parte superior é o componente chamado e assim por diante até que o TCP/IP fosse atingido.Observe que esta opção pode demorar muito e falhará, a menos que você tenha permissões suficientes.

    -n Exibe endereços e números de porta em formato numérico.

    -o Exibe o ID do processo proprietário associado a cada conexão.

  3. Encontre a porta que você está ouvindo em "Endereço Local"

  4. Veja o nome do processo diretamente abaixo dele.

OBSERVAÇÃO:Para encontrar o processo no Gerenciador de Tarefas

  1. Observe o PID (identificador de processo) próximo à porta que você está vendo.

  2. Abra o Gerenciador de Tarefas do Windows.

  3. Selecione a guia Processos.

  4. Procure o PID que você anotou quando fez o netstat na etapa 1.

    • Se você não vir uma coluna PID, clique em Exibir/Selecionar colunas.Selecione PID.

    • Certifique-se de que “Mostrar processos de todos os usuários” esteja selecionado.

Obtenha PID e nome da imagem

Use apenas um comando:

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

onde 9000 deve ser substituído pelo seu número de porta.

O saída conterá algo assim:

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

Explicação:

  • ele itera em cada linha da saída do seguinte comando:

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

    tasklist /FI "PID eq 5312"
    

Se você quiser pular o cabeçalho e o retorno do prompt de comando, você pode usar:

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

Saída:

java.exe                      5312 Services                   0    130,768 K

Primeiro, encontramos o ID do processo daquela tarefa específica que precisamos eliminar para obter a porta livre

tipo
netstat -n -a -o

Depois de executar este comando no Windows Command Line Prompt (CMD) Selecione o PID que eu acho que a última coluna suponha que este seja 3312

Agora digite

taskkill /F /PID 3312

Agora você pode verificar digitando o comando netstat.

OBSERVAÇÃO:Às vezes, o Windows não permite que você execute este comando diretamente no CMD, então primeiro você precisa seguir com essas etapas do prompt de comando start-> (clique com o botão direito do mouse no prompt de comando e execute como administrador)

É muito simples obter o número da porta do pid no Windows.

A seguir estão as etapas:

1) Vá para executar -> digite cmd -> pressione enter.

2) escreva o seguinte comando ...

netstat -aon | findstr [port number]

(Observação:Não inclua colchetes.)

3) pressione enter...

4) Em seguida, o cmd fornecerá os detalhes do serviço em execução naquela porta junto com o pid.

5) Abra o gerenciador de tarefas e clique na aba de serviço e combine o pid com o do cmd e pronto.

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

netstat -ao |find /i "listening"

Se quiser matar algum processo tenha o id e use este comando, para que a porta fique livre

Taskkill /F /IM pidof a process

Basta abrir um shell de comando e digitar:(dizendo que sua porta é 123456)

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

Você verá tudo que precisa

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

isso é como mencionado aqui

Se você quiser usar uma ferramenta GUI para fazer isso, há SysInternals TCPView.

Com o PowerShell 5 no Windows 10 ou Windows Server 2016, execute Get-NetTCPConnection cmdlet.Acho que também deve funcionar em versões mais antigas do Windows.

A saída padrão de Get-NetTCPConnection não inclui o ID do processo por algum motivo e é um pouco confuso.No entanto, você sempre pode obtê-lo formatando a saída.O imóvel que você procura é OwningProcess.

  • Se você quiser descobrir o ID do processo que está escutando na porta 443, execute 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
    
  • Formate a saída em uma tabela com as propriedades que você 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 você 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
    

Para descobrir qual processo específico (PID) está usando qual porta:

netstat -anon | findstr 1234

Onde 1234 é o PID do seu processo.[Vá para Gerenciador de Tarefas -> aba Serviços/Processos para descobrir o PID da sua aplicação]

netstat -ao e netstat -ab informará o aplicativo, mas se você não for administrador, receberá "A operação solicitada requer elevação".

Não é o ideal, mas se você usar o sysinternals Process Explorer, poderá acessar as propriedades de processos específicos e consultar a guia TCP para ver se eles estão usando a porta de seu interesse.É meio que uma coisa de agulha e palheiro, mas talvez ajude alguém...

Digite o comando: netstat -aon | findstr :DESIRED_PORT_NUMBER

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

Esta resposta foi postada originalmente em este tópico.

Eu recomendo Portas Atual da NirSoft.

CurrPorts pode filtrar os resultados exibidos. Visualização TCP não possui esse recurso.

Observação:Você pode clicar com o botão direito na conexão de soquete de um processo e selecionar "Fechar conexões TCP selecionadas" (você também pode fazer isso no TCPView).Isso geralmente corrige problemas de conectividade que tenho com o Outlook e o Lync depois de trocar de VPN.Com CurrPorts, você também pode fechar conexões na linha de comando com o parâmetro "/close".

Netstat

  • -a exibe todas as portas de conexão e escuta
  • -b exibe executáveis
  • -n parar de resolver nomes de host (formato numérico)
  • -o processo de propriedade

    netstat -bano | Findstr "7002"

    netstat -ano > ano.txt

Atualidades ferramenta ajuda a pesquisar e filtrar

Siga estas ferramentas: - De cmd :- C:\> netstat -anob com Administrador privilégio.

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

http://technet.microsoft.com/en-us/sysinternals/bb896645 - Despejo de processo

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

Tudo em sysinternals.com

Se você deseja apenas conhecer a execução do processo e os threads de cada processo, recomendo aprender sobre wmic.Maravilhosa ferramenta de linha cmd, que oferece muito mais do que você pode imaginar.

Exemplo: -

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

O comando acima mostrará toda a lista de processos resumidamente a cada 5 segundos.Para saber mais, você pode simplesmente ir com /? comando do windows, por exemplo,

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

e assim por diante.:)

netstat -a -o Isso mostra o PID do processo em execução em uma porta específica.

Tenha em mente o ID do processo e vá para Gerenciador de tarefas e serviços ou guia de detalhes e finalize o processo que possui o mesmo PID.

Assim, você pode encerrar um processo em execução em uma porta específica do Windows.

Para quem usa 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

Usando Powershell...
...este seria seu amigo (substitua 8080 pelo número da sua porta):

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

Exemplo de saída

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

Portanto, neste exemplo, tnslsnr.exe (banco de dados OracleXE) está escutando na porta 8080.

Explicação rápida
Select-String é usado para filtrar a saída longa de netstat para as linhas relevantes.
-Pattern testa cada linha em relação a uma expressão regular.
-Context 0,1 produzirá 0 linhas iniciais e 1 linha final para cada correspondência de padrão.

Programaticamente, você precisa de coisas de iphlpapi.h, por exemplo GetTcpTable2().Estruturas como MIB_TCP6ROW2 contém o PID do proprietário.

Uma solução de linha única que me ajuda é essa, basta substituir 3000 pela sua porta

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

  1. Abra o command prompt - start » run » cmd or start » All Programs » Accessories » Command Prompt.

  2. Tipo

    netstat -aon | findstr '[port_number]'

Substitua [port_number] pelo número da porta real que você deseja verificar e pressione Enter.

  1. Se a porta estiver sendo usada por algum aplicativo, os detalhes desse aplicativo serão mostrados.O número, que aparece na última coluna da lista, é o PID (ID do processo) dessa aplicação.Anote isso.
  2. Tipo

    tasklist | findstr '[PID]'

Substitua o [PID] pelo número da etapa acima e pressione Enter.

  1. Será mostrado o nome do aplicativo que está usando seu número de porta.

No Windows, se você quiser encontrar coisas escutando ou conectadas à porta 1234, execute o seguinte no prompt do cmd:

netstat -na | find "1234"

Use o script em lote abaixo, que usa um nome de processo como argumento e fornece saída netstat 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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top