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

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

C:\> netstat -a -b 

(adicione -n para pará-lo tentando resolver nomes de host, o que tornará muito mais rápido)

Observe a recomendação de Dane para o TCPView . 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, os executáveis ​​conhecidos hospedam vários componentes independentes e, nesses casos, a sequência de componentes envolvidos na criação da porta de conexão ou escuta é exibida. Nesse caso, o nome do executável está em [] na parte inferior, em cima está o componente chamado, e assim por diante, até que o TCP / IP seja atingido. Observe que essa opção pode ser demorada e falhará, a menos que você tenha permissions suficientes.

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

-o Exibe o ID do processo de propriedade associado a cada conexão.

Há uma GUI nativa para o Windows:

  • Iniciar >> Todos os programas >> Acessórios >> Ferramentas do sistema >> Monitor de resources

ou Execute resmon.exe ou na guia Desempenho do TaskManager

insira a descrição da imagem aqui

Use TCPView se você quiser uma GUI para isso. É o antigo aplicativo da Sysinternals que a Microsoft comprou.

 netstat -aon | find /i "listening" 

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

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

Usando o comando ‘Find’, você pode filtrar os resultados. encontrar / i “escuta” exibirá apenas as portas que estão “ouvindo”. Note que você precisa do / i para ignorar o Caso, caso contrário você digitaria “LISTENING”. | find “port” limitará os resultados apenas àqueles que contiverem o número de porta específico. Note que isso também filtrará os resultados que tiverem o número da porta em qualquer lugar da string de resposta.

  1. Abra uma janela de prompt de comando (como Administrador) Em “Iniciar \ checkbox de pesquisa” Digite “cmd” e clique com o botão direito do mouse 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, os executáveis ​​conhecidos hospedam vários componentes independentes e, nesses casos, a sequência de componentes envolvidos na criação da porta de conexão ou escuta é exibida. Nesse caso, o nome do executável está em [] na parte inferior, em cima está o componente chamado, e assim por diante, até que o TCP / IP seja atingido. Observe que essa opção pode ser demorada e falhará, a menos que você tenha permissions suficientes.

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

    -o Exibe o ID do processo de propriedade associado a cada conexão.

  3. Encontre a porta que você está escutando em “Local Address”

  4. Veja o nome do processo diretamente abaixo disso.

NOTA: Para encontrar o processo no Gerenciador de Tarefas

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

  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 Visualizar / Selecionar Colunas. Selecione PID.

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

Obter 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.

A saída conterá algo como isto:

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

Explicação:

  • itera através de 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 elemento nessa linha) e passado para o seguinte comando

     tasklist /FI "PID eq 5312" 

Se você quiser pular o header 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 

A opção -b mencionada na maioria das respostas requer 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" 

encontrar processo pela porta TCP / IP

Primeiro, encontramos o id do processo dessa tarefa específica que precisamos eliminar para obtermos a porta livre

tipo
netstat -n -a -o

Depois de executar este comando no prompt de linha de comando do windows (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 cruzar a verificação 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 estas etapas em start-> prompt de comando (clique direito no prompt de comando e execute como administrador)

É muito simples obter o número da porta do pid nas janelas.

A seguir estão as etapas:

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

2) escreva o seguinte comando …

 netstat -aon | findstr [port number] 

(Nota: não inclua colchetes.)

3) pressione enter …

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

5) Abra o gerenciador de tarefas e aperte a aba de serviço e combine o pid com o do cmd e é isso.

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

 netstat -ao |find /i "listening" 

Se quiser matar algum processo tem o id e use esse comando, para que essa 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ê vai ver tudo que precisa

Os headers 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ê gostaria de usar uma ferramenta GUI para fazer isso, existe o SysInternals TCPView .

netstat -ao e netstat -ab informam 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 você pode ir para as propriedades dos processos específicos e olhar para a aba TCP para ver se eles estão usando a porta que você está interessado. Pequena coisa de agulha e palheiro, mas talvez vai ajudar alguém ….

Com o PowerShell 5 no Windows 10 ou no Windows Server 2016, execute o cmdlet Get-NetTCPConnection . Eu acho que ele 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. A propriedade que você está procurando é 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 um 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 

Digite o comando: netstat -aon | findstr :DESIRED_PORT_NUMBER netstat -aon | findstr :DESIRED_PORT_NUMBER

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

Esta resposta foi originalmente publicada neste tópico .

Eu recomendo CurrPorts da NirSoft.

CurrPorts pode filtrar os resultados exibidos. O TCPView não possui esse recurso.

Nota: Você pode clicar com o botão direito do mouse 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 que eu alterno as VPNs. Com CurrPorts, você também pode fechar conexões da linha de comando com o parâmetro “/ close”.

Siga estas ferramentas: – A partir do cmd : – C:\> netstat -anob com privilégio de administrador .

http://technet.microsoft.com/en-us/sysinternals/bb896653 – Process Explorer

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

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

Tudo a partir de sysinternals.com

Se você quer apenas saber o processo em execução e os threads em cada processo, recomendo aprender sobre o wmic . Maravilhosa ferramenta de linha cmd, que lhe dá muito mais do que você pode saber.

Exampe: –

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

Acima de comando mostrará toda a lista de processos em breve a cada 5 segundos. Para saber mais, você pode simplesmente ir com /? comando de janelas, 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 o gerenciador de tarefas e serviços ou guia detalhes e finalizar o processo que tem o mesmo PID.

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

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 

Usando o Powershell …
… isso seria seu amigo (substitua 8080 pelo seu número de porta):

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

Amostra 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, o tnslsnr.exe (database OracleXE) está escutando na porta 8080.

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

Para o Windows, se você quiser encontrar coisas ouvindo ou conectado à porta 1234, execute o seguinte no prompt do cmd:

 netstat -na | find "1234" 

Se a mudança de porta não funcionar:

Passo 1: Vá aos serviços pesquisando por ‘serviços’ no Windows.

Etapa 2: Solicitar todos os serviços em ordem alfabética (não é necessário)

Etapa 3: Interrompa todos os serviços relacionados ao MYSQL.

Passo 4: Inicie o mysql do xampp.

Use o script de 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