netværk - Hvordan kan du finde ud af, hvilken proces der lytter på en port på Windows?

Indlæg af Hanne Mølgaard Plasc

Problem



Hvordan kan du finde ud af, hvilken proces der lytter på en port på Windows?

Bedste reference


C:> netstat -a -b


(Tilføj -n for at stoppe det med at forsøge at løse værtsnavne, hvilket vil gøre det meget hurtigere)


Note Danes anbefaling til TCPView. Ser meget nyttigt! [48]


-a Viser alle forbindelser og lytteporte.


-b Viser den eksekverbare, der er involveret i oprettelsen af ​​hver forbindelse eller
        lytteport. I nogle tilfælde er kendte eksekverbare værter
        flere uafhængige komponenter, og i disse tilfælde
        sekvens af komponenter involveret i oprettelsen af ​​forbindelsen
        eller lytteport vises. I dette tilfælde den eksekverbare
        Navnet er i [[]] nederst, på toppen er komponenten det hedder,
        og så videre indtil TCP/IP blev nået. Bemærk, at denne mulighed
        kan være tidskrævende og vil mislykkes, medmindre du har tilstrækkeligt
        tilladelser.


-n Viser adresser og portnumre i numerisk form.


-o Viser ejerproces-ID'et, der er knyttet til hver forbindelse.

Andre referencer 1


Der er en indbygget GUI til Windows:



  • Start >> Alle programmer >> Tilbehør >> Systemværktøjer >> Ressourceovervågning



eller Kør resmon.exe,
eller fra TaskManager effektivitetsfanen


Indtast billedbeskrivelse her

Andre referencer 2


Brug TCPView, hvis du vil have en GUI til dette. Det er den gamle Sysinternals app, som Microsoft købte. [49]

Andre referencer 3


netstat -aon | find /i "listening"

Andre referencer 4


Du kan få flere oplysninger, hvis du kører følgende kommando:


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


Ved hjælp af kommandoen 'Find' kan du filtrere resultaterne. find/jeg 'listening' vil kun vise porte, der er 'Lytte'. Bemærk, du har brug for den/jeg for at ignorere tilfælde ellers ville du skrive finde 'LYDENDE'. | find 'port' vil begrænse resultaterne til kun dem, der indeholder det specifikke portnummer. Bemærk, at det også vil filtrere i resultater, der har portnummeret hvor som helst i svarstrengen.

Andre referencer 5



  1. Åbn et kommandopromptvindue (som administrator) Fra 'Start \ Søgefelt' Indtast 'cmd' og højreklik derefter på 'cmd.exe' og vælg 'Kør som administrator'

  2. Indtast følgende tekst, og tryk derefter på Enter.


    netstat -abno



    -a Viser alle forbindelser og lytteporte.


    -b Viser den eksekverbare, der er involveret i oprettelsen af ​​hver forbindelse eller
                lytteport. I nogle tilfælde er kendte eksekverbare værter
                flere uafhængige komponenter, og i disse tilfælde
                sekvens af komponenter involveret i oprettelsen af ​​forbindelsen
                eller lytteport vises. I dette tilfælde den eksekverbare
                Navnet er i [[]] nederst, på toppen er komponenten det hedder,
                og så videre indtil TCP/IP blev nået. Bemærk, at denne mulighed
                kan være tidskrævende og vil mislykkes, medmindre du har tilstrækkeligt
                tilladelser.


    -n Viser adresser og portnumre i numerisk form.


    -o Viser ejerproces-ID'et, der er knyttet til hver forbindelse.

  3. Find den port, du lytter under under 'Lokal adresse'

  4. Se procesnavnet direkte under det.



BEMÆRK: For at finde processen under Task Manager



  1. Bemærk PID (procesidentifikator) ved siden af ​​den port, du kigger på.

  2. Åbn Windows Task Manager.

  3. Vælg fanen Processer.

  4. Se efter det PID, du noterede, da du gjorde netstat i trin 1.



    • Hvis du ikke ser en PID-kolonne, skal du klikke på Vis/Vælg kolonner. Vælg PID.

    • Sørg for at 'Vis processer fra alle brugere' er valgt.



Andre referencer 6


-B-omskifteren nævnt i de fleste svar kræver, at du har administrative rettigheder på maskinen. Du behøver virkelig ikke forhøjede rettigheder for at få procesnavnet!


Find pid af processen, der kører i portnummeret (f.eks. 8080)


netstat -ano | findStr "8080"


Find procesnavnet ved pid


tasklist /fi "pid eq 2216"


find proces ved TCP/IP-port [50]

Andre referencer 7


Hent PID og billednavn



Brug kun én kommando:


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


hvor 9000 skal erstattes af dit portnummer.


output indeholder noget som dette:


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





Forklaring:



  • det gentages gennem hver linje fra outputen af ​​følgende kommando:


    netstat -aon | findstr 9000
    

  • fra hver linje, PID (\%a - navnet er ikke vigtigt her) er uddraget (PID er elementet 5 th i den linje) følgende kommando


    tasklist /FI "PID eq 5312"
    






Hvis du vil springe over overskriften og returnere kommandoprompt , kan du bruge:


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

Andre referencer 8


Først finder vi proces id af den særlige opgave, som vi skal eliminere for at få port fri


skriv

netstat -n -a -o


Efter at have udført denne kommando i Windows kommandolinjeprompt (cmd)
vælg pid, som jeg synes sidstnævnte kolonne antager, at dette er 3312


Skriv nu


taskkill/F/PID 3312


Du kan nu krydse tjek ved at skrive netstat kommando.


BEMÆRK: Nogle gange tillader Windows ikke dig at køre denne kommando direkte på CMD, så først skal du gå med disse trin
fra start-> kommandoprompt (højreklik på kommandoprompt og kør som administrator)

Andre referencer 9


Det er meget nemt at få portnummeret fra pid i windows.


Følgende er trinene:


1) Gå til løb -> skriv cmd -> tryk enter.


2) skriv følgende kommando ...


netstat -aon | findstr [port number]


(Bemærk: Indsæt ikke firkantede parenteser.)


3) tryk på enter ...


4) Så vil cmd give dig detaljerne i den service, der kører på denne port alongwith pid.


5) Åbn opgaveadministrator og tryk på servicefanen og match pid'en med cmd'ens, og det er det.

Andre referencer 10


For at få en liste over alle ejerproces-id, der er forbundet med hver forbindelse:


netstat -ao |find /i "listening"


Hvis du vil dræbe enhver proces, skal du have id'et og bruge denne kommando, så porten bliver fri


Taskkill /F /IM pidof a process

Andre referencer 11


Bare åbn en kommandoskal og skriv: (siger din port er 123456)


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


Du vil se alt hvad du behøver


Overskrifterne er:


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


dette er som nævnt her

Andre referencer 12


Hvis du vil bruge et GUI-værktøj til at gøre dette, er sysInternals TCPView. [52]

Andre referencer 13


netstat -ao og netstat -ab fortæller dig ansøgningen, men hvis du ikke administrerer dig, får du 'Den ønskede operation kræver højde'.


Det er ikke ideelt, men hvis du bruger sysinternals Process Explorer, kan du gå til specifikke processer 'egenskaber og se på fanen TCP for at se om de' bruger porten du 'er interesseret i. Bit af en nål og høstak, men måske vil det hjælpe nogen ....

Andre referencer 14


Med PowerShell 5 på Windows 10 eller Windows Server 2016 skal du køre Get-NetTCPConnection cmdlet. Jeg gætter på, at det også skal arbejde på ældre Windows-versioner. [53]


Standard output fra Get-NetTCPConnection inkluderer ikke Proces ID af en eller anden grund, og det er lidt forvirrende. Du kan dog altid få det ved at formatere output. Ejendommen du søger er OwningProcess.



  • Hvis du vil finde ud af id'et af processen, der lytter på port 443, skal du køre denne kommando:


    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
    

  • Formater output til en tabel med de egenskaber du leder efter:


    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
    

  • Hvis du vil finde ud af et navn på processen, skal du køre denne kommando:


    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
    


Andre referencer 15


Indtast kommandoen: netstat -aon | findstr :DESIRED\_PORT\_NUMBER


For eksempel, hvis jeg vil finde port 80: netstat -aon | findstr :80


Dette svar blev oprindeligt indsendt i denne tråd.

Andre referencer 16


Jeg anbefaler CurrPorts fra NirSoft. [55]


CurrPorts kan filtrere de viste resultater. TCPView har ikke denne funktion. [56]


Bemærk: Du kan højreklikke på en proces s socketforbindelse og vælge 'Luk valgte TCP Connections' (Du kan også gøre dette i TCPView). Dette løser ofte forbindelsesproblemer, jeg har med Outlook og Lync, efter jeg har skiftet VPN'er. kan også lukke forbindelser fra kommandolinjen med parameteren '/close'.

Andre referencer 17


Følg disse værktøjer: - Fra cmd : - C:> netstat -anob med Administrator privilegium.


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


http://technet.microsoft.com/en-us/sysinternals/bb896645 - Process Dump [58]


http://technet.microsoft.com/en-us/sysinternals/bb896644 - Port Monitor [59]


Alt fra sysinternals.com


Hvis du bare vil kende proceskørsel og tråde under hver proces, anbefaler jeg at lære om wmic. Wonderful cmd line værktøj, som giver dig meget mere, end du kan vide.


Exampe: -


c:> wmic process list brief /every:5


Ovenstående kommando viser alle proceslister kort hvert 5. sekund. For at vide mere, kan du bare gå med /? kommando af windows, for f.eks.


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


og så videre og så videre. :)

Andre referencer 18


netstat -a -o
Dette viser PID for processen, der kører på en bestemt port.


Husk proces id og gå til Opgavehåndtering og tjenester eller detaljer fan og afslut processen, der har samme PID.


Således kan du dræbe en proces, der kører på en bestemt port i Windows.

Andre referencer 19


For dem der bruger Powershell, prøv Get-NetworkStatistics: [60]


> 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

Andre referencer 20


Brug af Powershell ...

... dette ville være din ven (erstat 8080 med dit portnummer):


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


Prøveudgang


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


Så i dette eksempel lytter tnslsnr.exe (OracleXE database) på port 8080.


Hurtig forklaring

Select-String bruges til at filtrere den lange udgave af netstat for de relevante linjer.

-Pattern tester hver linje mod et regulært udtryk.

-Context 0,1 vil udstille 0 ledende linjer og 1 baglinje for hver mønsterkamp.

Andre referencer 21


For Windows, hvis du vil finde ting, der lytter eller forbindes til port 1234, skal du udføre følgende ved cmd-prompt:


netstat -na | find "1234"

Andre referencer 22


Hvis portændringen ikke virker:


Trin 1: Gå til tjenester ved at søge efter 'tjenester' i Windows.


Trin 2: Bestil alle tjenester i alfabetisk rækkefølge. (Ikke nødvendigt)


Trin 3: Stop alle tjenester relateret til MYSQL.


Trin 4: Start mysql fra xampp.

Andre referencer 23


Brug nedenstående batch script, der tager et procesnavn som argument og giver netstat output til processen.


@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

Andre referencer 24


netstat
-A viser alle forbindelses- og lytteporte
-b viser eksekverbare filer
-Det stopper ikke at løse værtsnavne (numerisk formular)
-ejende proces


netstat -bano | findstr "7002"

netstat -ano > ano.txt 


Currports hjælper med at søge og filtrere [61]