Come si può scoprire quale processo è in ascolto su una porta su Windows?
-
09-06-2019 - |
Domanda
Come si può scoprire quale processo è in ascolto su una porta su Windows?
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
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"
È 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.
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"
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.
Trovare la Porta di ascolto sotto "Indirizzo Locale"
Guardate il nome del processo, direttamente al di sotto.
NOTA:Per trovare il processo in Task Manager
Nota il PID (process identifier) accanto alla porta che si sta guardando.
Aprire Task Manager Di Windows.
Selezionare la scheda "Processi".
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'5
th elemento in una riga) e passato al comando riportato di seguitotasklist /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
Aprire il
command prompt - start » run » cmd or start » All Programs » Accessories » Command Prompt
.Tipo
netstat -aon | findstr '[port_number]'
Sostituire il [port_number] con l'effettivo numero di porta che si desidera controllare e premere invio.
- 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.
Tipo
tasklist | findstr '[PID]'
Sostituire il [PID] con il numero del punto di cui sopra e premere invio.
- 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