Jak dowiedzieć się, który proces nasłuchuje na porcie w systemie Windows?
windows
networking
port
Tylko czytać
źródło
źródło
Odpowiedzi:
Nowa odpowiedź, PowerShell
Stara odpowiedź, cmd
(Dodaj -n, aby zatrzymać próbę rozwiązania nazw hostów, co znacznie przyspieszy.)
Uwaga Zalecenia Dane dla TCPView . Wygląda bardzo przydatnie!
-a Wyświetla wszystkie połączenia i porty nasłuchiwania.
-b Wyświetla plik wykonywalny zaangażowany w tworzenie każdego połączenia lub portu nasłuchującego. W niektórych przypadkach dobrze znane pliki wykonywalne obsługują wiele niezależnych komponentów, aw tych przypadkach wyświetlana jest sekwencja komponentów zaangażowanych w tworzenie połączenia lub portu nasłuchującego. W tym przypadku nazwa pliku wykonywalnego znajduje się w [] u dołu, u góry jest wywoływany komponent i tak dalej, aż do osiągnięcia TCP / IP. Pamiętaj, że ta opcja może być czasochłonna i zawiedzie, chyba że masz wystarczające uprawnienia.
-n Wyświetla adresy i numery portów w postaci numerycznej.
-o Wyświetla identyfikator procesu właściciela powiązanego z każdym połączeniem.
źródło
1234
- możesz użyćtasklist /fi "pid eq 1234"
nazwy i innych szczegółów procesu.Istnieje natywny interfejs GUI dla systemu Windows:
Lub Uruchom
resmon.exe
lub z zakładki wydajności Menedżera zadań .źródło
Użyj TCPView, jeśli potrzebujesz GUI. To stara aplikacja Sysinternals , którą Microsoft wykupił.
źródło
Dla Windowsa:
źródło
netstat -aon | find /i "abhören"
Dla niemieckiego.FIND: Parameter format not correct
Przełącznik -b wymieniony w większości odpowiedzi wymaga posiadania uprawnień administratora na komputerze. Tak naprawdę nie potrzebujesz podwyższonych uprawnień, aby uzyskać nazwę procesu!
Znajdź numer pid procesu uruchomionego na numerze portu (np. 8080)
Znajdź nazwę procesu według pid
źródło
Możesz uzyskać więcej informacji, uruchamiając następujące polecenie:
za pomocą polecenia „Znajdź” można filtrować wyniki.
find /i "listening"
wyświetli tylko porty, które są „nasłuchujące”. Uwaga: musisz/i
zignorować wielkość liter, w przeciwnym razie wpisz „LISTENING”.| find "port"
ograniczy wyniki tylko do tych, które zawierają określony numer portu. Uwaga: w tym przypadku filtruje również wyniki, które mają numer portu w dowolnym miejscu ciągu odpowiedzi.źródło
FIND: Parameter format not correct
. Musisz dodać spację po kryteriach wyszukiwania. To cię opuścinetstat -aon | find /i "listening" | find "1234 "
.{back tick}
" nasłuchiwanie{back tick}
"" | znalezienie "{back tick}
" port{back tick}
" „(<- zwróć uwagę na cytowane cytaty - wybacz ten termin,back tick
ponieważ nie mogę dodać rzeczywistej postaci, ponieważ uważa ją za wycinanie)Otwórz okno wiersza polecenia (jako administrator) W polu „Start \ Search” wpisz „cmd”, a następnie kliknij prawym przyciskiem myszy „cmd.exe” i wybierz „Uruchom jako administrator”
Wpisz następujący tekst, a następnie naciśnij Enter.
netstat -abno
-a Wyświetla wszystkie połączenia i porty nasłuchiwania.
-b Wyświetla plik wykonywalny zaangażowany w tworzenie każdego połączenia lub portu nasłuchującego. W niektórych przypadkach dobrze znane pliki wykonywalne obsługują wiele niezależnych komponentów, aw tych przypadkach wyświetlana jest sekwencja komponentów zaangażowanych w tworzenie połączenia lub portu nasłuchującego. W tym przypadku nazwa pliku wykonywalnego znajduje się w [] u dołu, u góry jest wywoływany komponent i tak dalej, aż do osiągnięcia TCP / IP. Pamiętaj, że ta opcja może być czasochłonna i zawiedzie, chyba że masz wystarczające uprawnienia.
-n Wyświetla adresy i numery portów w postaci numerycznej.
-o Wyświetla identyfikator procesu właściciela powiązanego z każdym połączeniem.
Znajdź port, którego słuchasz, w obszarze „Adres lokalny”
Spójrz na nazwę procesu bezpośrednio pod tym.
UWAGA: Aby znaleźć proces w Menedżerze zadań
Zwróć uwagę na PID (identyfikator procesu) obok portu, na który patrzysz.
Otwórz Menedżera zadań Windows.
Wybierz kartę Procesy.
Poszukaj PID zanotowanego podczas wykonywania statystyki sieci w kroku 1.
Jeśli nie widzisz kolumny PID, kliknij Wyświetl / Wybierz kolumny. Wybierz PID.
Upewnij się, że wybrano „Pokaż procesy od wszystkich użytkowników”.
źródło
Uzyskaj PID i nazwę obrazu
Użyj tylko jednego polecenia:
gdzie
9000
należy zastąpić numerem portu.Dane wyjściowe będą zawierać coś takiego:
Wyjaśnienie:
iteruje każdy wiersz od wyniku następującego polecenia:
z każdej linii
%a
wyodrębniany jest PID ( - tutaj nazwa nie jest ważna) (PID jest5
th elementem tego wiersza) i przekazywany do następującego poleceniaJeśli chcesz pominąć ten nagłówek i powrót do wiersza polecenia , można użyć:
Wynik:
źródło
findstr :9000
jeśli nie, znajdziesz nawet aplikacje, które zawierają numer (np. Podczas wyszukiwania „80” znajdziesz aplikacje również na porcie 80, 800, 8000).Najpierw znajdujemy identyfikator procesu tego konkretnego zadania, które musimy wyeliminować, aby uwolnić port:
Rodzaj
Po wykonaniu tego polecenia w wierszu polecenia systemu Windows (cmd) wybierz pid, który moim zdaniem jest ostatnią kolumną. Załóżmy, że to 3312.
Teraz wpisz
Możesz teraz sprawdzić krzyżowo, wpisując
netstat
polecenie.UWAGA: czasami system Windows nie pozwala na uruchomienie tego polecenia bezpośrednio na CMD, więc najpierw musisz wykonać następujące kroki:
Z menu Start -> wiersz polecenia (kliknij prawym przyciskiem myszy wiersz polecenia i uruchom jako administrator)
źródło
Aby uzyskać listę wszystkich identyfikatorów procesów będących właścicielami powiązanych z każdym połączeniem:
Jeśli chcesz zabić dowolny proces, posiadaj identyfikator i użyj tego polecenia, aby port stał się wolny
źródło
Bardzo łatwo jest uzyskać numer portu z PID w systemie Windows.
Oto kroki:
Idź do uruchomienia → wpisz cmd → naciśnij Enter.
Napisz następujące polecenie ...
(Uwaga: nie dołączaj nawiasów kwadratowych).
Naciśnij Enter...
Następnie cmd poda szczegóły usługi działającej na tym porcie wraz z PID.
Otwórz Menedżera zadań i kliknij kartę usługi i dopasuj PID do tego z cmd, i to wszystko.
źródło
Po prostu otwórz powłokę poleceń i wpisz (mówiąc, że twój port to 123456):
Zobaczysz wszystko, czego potrzebujesz.
Nagłówki to:
Jak wspomniano tutaj .
źródło
findstr 123456
(bez cudzysłowów) albofind "123456"
(z cudzysłowami). (@Josh)Aby dowiedzieć się, który konkretny proces (PID) korzysta z którego portu:
Gdzie 1234 jest PID twojego procesu. [Przejdź do Menedżera zadań → zakładka Usługi / Procesy, aby znaleźć PID Twojej aplikacji.]
źródło
-n
zestawu flag dwa razy.-ano
wystarczy.W programie PowerShell 5 w systemie Windows 10 lub Windows Server 2016 uruchom polecenie
Get-NetTCPConnection
cmdlet. Wydaje mi się, że powinien działać również na starszych wersjach systemu Windows.Domyślne wyjście
Get-NetTCPConnection
nie zawiera identyfikatora procesu z jakiegoś powodu i jest nieco mylące. Jednak zawsze można go uzyskać, formatując dane wyjściowe. Właściwość, której szukasz, toOwningProcess
.Jeśli chcesz znaleźć identyfikator procesu nasłuchującego na porcie 443, uruchom następującą komendę:
Sformatuj dane wyjściowe w tabeli z właściwościami, których szukasz:
Jeśli chcesz znaleźć nazwę procesu, uruchom następującą komendę:
źródło
Jeśli chcesz użyć do tego narzędzia GUI, skorzystaj z TCPView Sysinternals .
źródło
Wpisz polecenie:
netstat -aon | findstr :DESIRED_PORT_NUMBER
Na przykład, jeśli chcę znaleźć port 80:
netstat -aon | findstr :80
Ta odpowiedź została pierwotnie zamieszczona na to pytanie .
źródło
Netstat:
-o proces posiadania
CurrPorts narzędzie ułatwia wyszukiwanie i filtr
źródło
Otwórz wiersz polecenia - start → Uruchom →
cmd
lub menu Start → Wszystkie programy → Akcesoria → Wiersz polecenia .Rodzaj
Zamień na
[port_number]
rzeczywisty numer portu, który chcesz sprawdzić i naciśnij Enter.Rodzaj
Zastąp
[PID]
cyfrę z powyższego kroku i naciśnij Enter.źródło
netstat -ao
inetstat -ab
poinformuje Cię o aplikacji, ale jeśli nie jesteś administratorem systemu, zobaczysz komunikat „Żądana operacja wymaga podniesienia uprawnień”.Nie jest to idealne rozwiązanie, ale jeśli używasz Eksploratora procesów Sysinternals , możesz przejść do właściwości określonych procesów i spojrzeć na kartę TCP, aby sprawdzić, czy używają portu, który Cię interesuje. To trochę igła i stóg siana ale może to komuś pomóc ...
źródło
Polecam CurrPorts z NirSoft.
CurrPorts może filtrować wyświetlane wyniki. TCPView nie ma tej funkcji.
Uwaga: Możesz kliknąć prawym przyciskiem myszy połączenie gniazda procesu i wybrać „Zamknij wybrane połączenia TCP” (możesz to również zrobić w TCPView). To często rozwiązuje problemy z łącznością występujące w programach Outlook i Lync po zmianie sieci VPN. Za pomocą CurrPorts możesz także zamykać połączenia z wiersza poleceń za pomocą parametru „/ close”.
źródło
Jedno-liniowe rozwiązanie, które mi pomaga, to właśnie to. Po prostu zastąp 3000 portem:
Edycja: zmieniono
kill
naStop-Process
na bardziej podobny do języka PowerShellźródło
Get-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess | Stop-Process
Postępuj zgodnie z tymi narzędziami: Z cmd :
C:\> netstat -anob
z uprawnieniami administratora .Process Explorer
Zrzut procesu
Monitor portu
Wszystko z sysinternals.com.
Jeśli chcesz tylko wiedzieć, że proces działa i wątki w ramach każdego procesu, polecam dowiedzieć się więcej
wmic
. To wspaniałe narzędzie wiersza poleceń, które daje znacznie więcej niż możesz wiedzieć.Przykład:
Powyższe polecenie wyświetli listę wszystkich procesów w skrócie co 5 sekund. Aby dowiedzieć się więcej, możesz po prostu przejść do
/?
poleceń systemu Windows, na przykładI tak dalej i tak dalej. :)
źródło
Posługiwać się:
Pokazuje PID procesu uruchomionego na określonym porcie.
Pamiętaj o identyfikatorze procesu i przejdź do Menedżera zadań oraz karty usług lub szczegółów i zakończ proces o tym samym PID.
W ten sposób możesz zabić proces działający na określonym porcie w systemie Windows.
źródło
Dla osób korzystających z PowerShell, spróbuj
Get-NetworkStatistics
:źródło
Programowo potrzebujesz rzeczy z iphlpapi.h , na przykład GetTcpTable2 (). Struktury takie jak MIB_TCP6ROW2 zawierają PID właściciela.
źródło
Za pomocą PowerShell ... ... to byłby twój przyjaciel (zastąp 8080 numerem portu):
Próbka wyjściowa
W tym przykładzie tnslsnr.exe (baza danych OracleXE) nasłuchuje na porcie 8080.
Szybkie wyjaśnienie
Select-String
służy do filtrowania długich wynikównetstat
dla odpowiednich linii.-Pattern
testuje każdą linię pod kątem wyrażenia regularnego.-Context 0,1
wyświetli 0 linii wiodących i 1 linię końcową dla każdego dopasowania wzorca.źródło
W systemie Windows, jeśli chcesz znaleźć rzeczy nasłuchujące lub podłączone do portu 1234, wykonaj następujące czynności w wierszu polecenia cmd:
źródło
Użyj poniższego skryptu wsadowego, który przyjmuje nazwę procesu jako argument i podaje
netstat
dane wyjściowe dla procesu.źródło
Na podstawie odpowiedzi z informacjami i zabijaniem , dla mnie przydatne jest połączenie ich w jednym poleceniu . Możesz uruchomić to z cmd, aby uzyskać informacje o procesie nasłuchującym na danym porcie (przykład 8080):
Lub jeśli chcesz go zabić:
Możesz również umieścić te polecenia w pliku nietoperza (będą się nieco różnić - zamień
%i
na%%i
):Plik
portInfo.bat
Plik
portKill.bat
Następnie z cmd możesz to zrobić:
portInfo.bat 8080
lub
portKill.bat 8080
źródło
.\portInfo.bat 800
w PowerShell daje coś takiego:C:\work>for /F "tokens=3 delims=LISTENING" %i in ('netstat -ano | findStr "800" | findStr "["') do (tasklist /fi "pid eq %i" ) C:\work>(tasklist /fi "pid eq 4" ) Image Name PID Session Name Session# Mem Usage ========================= ======== ================ =========== ============ System 4 Services 0 1,820 K
portInfo.bat
w terminalu PowerShell, a następnie wykonałem.\portInfo.bat 8080
. Dane wyjściowe stanowiła tylko zawartość pliku wsadowego. Bardzo możliwe, że coś przeoczyłem. Uwaga: korzystam z programu PowerShell 6.2.3 w systemie Windows 10. Próbowałem również w zwykłym wierszu polecenia, ale wynik był taki sam: Dane wyjściowe zawartości skryptu. Jestem pewien, że brakuje mi ważnej informacji, aby to zadziałało./nh
:@tasklist /nh /fi "pid eq %i"
? I dokładnie drzwi:Findstr ":8080"
W moim przypadku port (3000) nie był w ogóle używany i nie jest widoczny w netstat. Ale! Deinstalator Docker dla Windows rozwiązał problem.
źródło