Domanda

Come si può scoprire quale processo è in ascolto su una porta su Windows?

È stato utile?

Soluzione

PowerShell

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

cmd

 C:\> netstat -a -b

(Aggiungere -n per interrompere cercando di risolvere i nomi degli host, il che lo rende molto più veloce.)

Nota Dane raccomandazione per TCPView.Sembra molto utile!

-un Visualizza tutte le connessioni e le porte in ascolto.

-b Visualizza il file eseguibile coinvolti nella creazione di ogni connessione o porta di ascolto.In alcuni casi ben noti di file eseguibili di ospitare più componenti indipendenti, e in questi casi la sequenza dei componenti coinvolti nella creazione della connessione o della porta di ascolto è visualizzato.In questo caso il nome del file eseguibile è in [], in fondo, in alto la componente chiamato, e così via fino a quando il protocollo TCP/IP è stato raggiunto.Nota: questa opzione può essere che richiede tempo e non riesce se non si dispone di autorizzazioni sufficienti.

-n Visualizza gli indirizzi e i numeri di porta in forma numerica.

-o Visualizza il possesso di ID di processo associato a ogni connessione.

Altri suggerimenti

C'è un nativo GUI per Windows:

  • Start>>Tutti I Programmi>>Accessori>>Utilità Di Sistema>>Monitoraggio Risorse

o Eseguire resmon.exe, o da TaskManager scheda prestazioni

enter image description here

Utilizzare TCPView se vuoi una GUI per questo.E ' il vecchio Sysinternals app che Microsoft ha acquistato fuori.

netstat -aon | find /i "listening"

L'opzione-b menzionato nella maggior parte delle risposte è necessario avere privilegi di amministratore sulla macchina.Non avete davvero bisogno di diritti elevati per ottenere il nome del processo!

Trovare il pid del processo in esecuzione, il numero di porta (ad esempio, 8080)

netstat -ano | findStr "8080"

Trovare il nome del processo con pid

tasklist /fi "pid eq 2216"

find process by TCP/IP port

È possibile ottenere ulteriori informazioni se si esegue il comando seguente:

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

utilizzando il "Trova" di comando, che consente di filtrare i risultati.find /i "in ascolto" per visualizzare solo le porte che sono 'Ascolto'.Nota è necessario /i per ignorare Caso contrario, digitare trovare "in ASCOLTO".|trova la "porta" limitare i risultati solo quelli che contengono il numero di porta specifico.Nota, questo sarà anche un filtro di risultati che hanno il numero della porta in qualsiasi punto della stringa di risposta.

  1. Aprire una finestra del prompt dei comandi (come Amministratore) Da "Start\box di Ricerca" Inserire "cmd", quindi fare clic destro su "cmd.exe" e selezionare "Esegui come Amministratore"

  2. Immettere il seguente testo, quindi premere Invio.

    netstat -abno

    -un Visualizza tutte le connessioni e le porte in ascolto.

    -b Visualizza il file eseguibile coinvolti nella creazione di ogni connessione o porta di ascolto.In alcuni casi ben noti eseguibili host più componenti indipendenti, e in questi casi la sequenza dei componenti coinvolti nella creazione della connessione o porta di ascolto è visualizzato.In questo caso l'eseguibile il nome è in [], in fondo, in alto la componente chiamato, e così via fino a quando il protocollo TCP/IP è stato raggiunto.Si noti che questa opzione può essere che richiede tempo e non riesce se non si dispone di sufficiente le autorizzazioni.

    -n Visualizza gli indirizzi e i numeri di porta in forma numerica.

    -o Visualizza il possesso di ID di processo associato a ogni connessione.

  3. Trovare la Porta di ascolto sotto "Indirizzo Locale"

  4. Guardate il nome del processo, direttamente al di sotto.

NOTA:Per trovare il processo in Task Manager

  1. Nota il PID (process identifier) accanto alla porta che si sta guardando.

  2. Aprire Task Manager Di Windows.

  3. Selezionare la scheda "Processi".

  4. Cercare il numero di serie è indicato quando hai fatto il comando netstat nel passaggio 1.

    • Se non vedi una colonna PID, fare clic su Visualizza / Selezionare le Colonne.Selezionare PID.

    • Assicurati che l'opzione “Mostra i processi di tutti gli utenti” è selezionata.

Ottenere il PID e il Nome dell'Immagine

Utilizzare un solo comando:

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

dove 9000 dovrebbe essere sostituito con il numero di porta.

Il uscita conterrà qualcosa di simile a questo:

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

Spiegazione:

  • scorre ogni riga dell'output del seguente comando:

    netstat -aon | findstr 9000
    
  • da ogni riga, il PID (%a - il nome non è importante qui) è estratta (PID è l' 5th elemento in una riga) e passato al comando riportato di seguito

    tasklist /FI "PID eq 5312"
    

Se si desidera saltare il intestazione e il ritorno del prompt dei comandi, è possibile utilizzare:

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

Output:

java.exe                      5312 Services                   0    130,768 K

Per prima cosa trovare id di processo di questo particolare compito che dobbiamo eliminare per avere il porto libero

tipo
netstat -n-a -o

Dopo l'esecuzione di questo comando nella riga di comando di windows prompt dei comandi(cmd) selezionare il pid che penso che l'ultima colonna si supponga che questo è 3312

Ora tipo

taskkill /F /PID 3312

È ora possibile controllare digitando il comando netstat.

NOTA:a volte windows non permette di eseguire questo comando direttamente sul CMD quindi prima di tutto bisogna andare con i passaggi da start-> prompt dei comandi (tasto destro del mouse su prompt dei comandi ed esegui come amministratore)

È molto semplice per ottenere il numero di porta del pid in windows.

La procedura seguente:

1) Vai su esegui --> digita cmd --> premere invio.

2) scrivere il seguente comando...

netstat -aon | findstr [port number]

(Nota:Non includere le parentesi quadre.)

3) premere enter...

4) Poi cmd vi darà i dettagli del servizio in esecuzione su quella porta alongwith pid.

5) Aprire il task manager e premere il servizio scheda e abbinare il pid con il cmd e basta.

Per ottenere un elenco di tutti il possesso di ID di processo associato a ogni connessione:

netstat -ao |find /i "listening"

Se si vuole uccidere qualsiasi processo con id e utilizzare questo comando, in modo che la porta a diventare libero

Taskkill /F /IM pidof a process

Basta aprire una shell dei comandi e digitare :(dicendo che il tuo port è 123456)

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

Si vedrà tutto il necessario

Le intestazioni sono :

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

questo è come indicato qui

Se si desidera utilizzare uno strumento GUI per fare questo c'è SysInternals TCPView.

Con il PowerShell 5 su Windows 10 o Windows Server 2016, eseguire Get-NetTCPConnection cmdlet.Credo che dovrebbe funzionare anche sulle vecchie versioni di Windows.

L'output predefinito di Get-NetTCPConnection non include l'ID di Processo per qualche motivo e si è un po ' di confusione.Tuttavia, si può sempre ottenere la formattazione dell'output.La proprietà che si sta cercando è OwningProcess.

  • Se si desidera trovare l'ID del processo che è in ascolto sulla porta 443, eseguire questo 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
    
  • Formattare l'output a un tavolo con la proprietà che si cerca:

    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 si desidera trovare un nome di processo, eseguire questo 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
    

Per scoprire a quale specifico processo(PID) utilizza la porta:

netstat -anon | findstr 1234

Dove 1234 è il PID del processo.[Vai al Task Manager -> Servizi/scheda Processi per trovare il PID dell'applicazione]

netstat -ao e netstat -ab dirti l'applicazione, ma se non sei admin avrai "l'operazione richiede L'elevazione".

Non è l'ideale, ma se si utilizza sysinternals Process Explorer si può andare a specifici processi di' proprietà e guardare il TCP scheda per vedere se si sta utilizzando la porta a cui sei interessato.Po ' di un ago pagliaio cosa, ma forse può aiutare qualcuno....

Digitare il comando: netstat -aon | findstr :DESIRED_PORT_NUMBER

Per esempio, se voglio trovare la porta 80: netstat -aon | findstr :80

Questa risposta è stata originariamente inviato in questo thread.

Mi raccomando CurrPorts da NirSoft.

CurrPorts possibile filtrare i risultati visualizzati. TCPView non dispone di questa funzione.

Nota:È possibile fare clic destro su un processo di presa di collegamento e selezionare "Chiudi Selezionato le Connessioni TCP" (Si può fare anche nel TCPView).Questo spesso consente di risolvere i problemi di connettività che ho con Outlook e Lync dopo posso passare Vpn.Con CurrPorts, si può anche chiudere connessioni da riga di comando con "/chiudi" parametro.

Netstat

  • -una mostra tutte le connessioni e le porte in ascolto
  • -b visualizza i file eseguibili
  • -n interrompere risolvere i nomi degli host (in forma numerica)
  • -o possedere processo

    netstat -bano | findstr "7002"

    netstat -ano > ano.txt

Currports strumento aiuta a ricerca e filtro

Seguire questi strumenti :- Da cmd :- C:\> netstat -anob con Amministratore privilegio.

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

http://technet.microsoft.com/en-us/sysinternals/bb896645 - Il Processo Di Dump

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

Il tutto da sysinternals.com

Se si desidera conoscere l'esecuzione di un processo e thread in ogni processo, vi consiglio di imparare wmic.Meravigliosa linea cmd strumento, che ti dà molto più di quanto si può sapere.

Exampe :-

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

Al di sopra di comando mostrerà tutto il processo di elenco in breve ogni 5 secondi.Per saperne di più, si può solo andare con /? comando di windows , per E. g,

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

e così via e così via.:)

netstat-a -o Questo mostra il PID del processo in esecuzione su una particolare porta.

Tenete a mente l'id di processo e di andare al Task manager e servizi o la scheda "dettagli" e terminare il processo che ha lo stesso PID.

Così si può uccidere un processo in esecuzione su una particolare porta in windows.

Per coloro che utilizzando Powershell, provare 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

Utilizzando Powershell...
...questo sarebbe il tuo amico (sostituire 8080 con il numero di porta):

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

Esempio di output

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

Quindi, in questo esempio tnslsnr.exe (OracleXE database) è in ascolto sulla porta 8080.

Rapida spiegazione
Select-String viene utilizzato per filtrare i lunghi output di netstat per le righe corrispondenti.
-Pattern le prove di ogni riga con un'espressione regolare.
-Context 0,1 in uscita 0 linee guida e 1 linea per ogni pattern match.

A livello di programmazione, è necessario roba da iphlpapi.h, per esempio GetTcpTable2().Strutture come MIB_TCP6ROW2 contenere il proprietario PID.

Una linea unica soluzione che mi aiuta è questo uno, basta sostituire 3000 con la tua porta

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

  1. Aprire il command prompt - start » run » cmd or start » All Programs » Accessories » Command Prompt.

  2. Tipo

    netstat -aon | findstr '[port_number]'

Sostituire il [port_number] con l'effettivo numero di porta che si desidera controllare e premere invio.

  1. Se la porta è utilizzata da qualsiasi applicazione, l'applicazione di dettaglio sarà visualizzato.Il numero, che è indicato nell'ultima colonna della lista, è il PID (process ID), di tale applicazione.Prendere nota di questo.
  2. Tipo

    tasklist | findstr '[PID]'

Sostituire il [PID] con il numero del punto di cui sopra e premere invio.

  1. Ti verrà mostrato il nome dell'applicazione che sta usando il vostro numero di porta.

Per Windows, se si desidera trovare roba di ascolto o collegato alla porta 1234, eseguire quanto segue al prompt dei comandi cmd:

netstat -na | find "1234"

Utilizzare sotto batch script che prende il nome di un processo come argomento e dà output del comando netstat per il 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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top