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?
30 answers
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.
- menu Iniciar → Todos os Programas → Acessórios → Ferramentas do Sistema → Monitor de Recurso
Ou Corre. resmon.exe
,
ou da página de desempenho do Gestor de Tarefas.
Para As Janelas:
netstat -aon | find /i "listening"
Utilize TCPView Se quiser uma interface gráfica para isto. É a antiga aplicação Sysinternals que a Microsoft comprou.
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"
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.
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"
-
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.
Encontre o porto em que está a ouvir em "Endereço Local"
Olhe para o nome do processo diretamente sob isso.
Nota: para encontrar o processo sob o Gestor de Tarefas
Observe o PID (identificador de processo) ao lado do porto que você está olhando.
Abrir As Janelas tarefa.
Seleccione a página processos.
-
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.
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 é o5
TH elemento nessa linha) e passou para o seguinte comandotasklist /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
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)
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
É muito simples obter o número de porta de um PID no Windows.
Os seguintes passos são:
Go to run → type cmd → press Enter .
-
Escreva o seguinte comando...
netstat -aon | findstr [port number]
(Nota: não inclua parêntesis rectos.)
Pressione Entre ...
Em seguida, o cmd lhe dará o detalhe do serviço que corre nessa porta junto com o PID.
Abrir o Gestor de tarefas e carregue na página de serviço e combine o PID com o do cmd, e é tudo.
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.]
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
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.
Se quiser usar uma ferramenta GUI para fazer isto, existe O TCPView do Sysinternals .
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
Abre a linha de comandos-start → executar →
cmd
, ou iniciar o menu → Todos os programas → Acessórios → comando Prompt .-
Tipo
netstat -aon | findstr '[port_number]'
Substitua o [port_number]
pelo número de Porto actual que deseja verificar e carregar em indique .
- 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.
-
Tipo
tasklist | findstr '[PID]'
Substitua o [PID]
pelo número do passo acima e carregue em indique .
- ser-lhe-á mostrado o nome da aplicação que está a usar o seu número de Porto.
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.
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...
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".
$P = Get-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess; Stop-Process $P.Id
Editar: alterado kill
para Stop-Process
para uma linguagem mais poderosa
Siga estas ferramentas: de cmd: C:\> netstat -anob
com privilégios de administrador .
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. :)
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.
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 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 denetstat
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.
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
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"
lsof -i tcp:8080
PID
do processo, pode matá-lo com:
kill -9 <PID>
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