Dlaczego netstat nie kończy pracy, chyba że dasz mu flagę n?
Jared Beach
2
@JaredBeach - czeka na odwrotne rozpoznawanie nazw DNS, więc ostatecznie zakończy się po przekroczeniu limitów czasu. Jeśli zawiesza się to na wewnętrznych adresach IP, oznacza to problem z lokalnymi serwerami DNS.
Steve Friedl
7
Jeśli chcesz to zrobić programowo, możesz użyć niektórych opcji podanych w następujący sposób w skrypcie PowerShell:
Jednak; pamiętaj, że im dokładniejszy możesz być, tym dokładniejszy będzie wynik PID. Jeśli wiesz, na którym hoście ma znajdować się port, możesz go bardzo zawęzić. netstat -aon | findstr "0.0.0.0:9999"zwróci tylko jedną aplikację i najprawdopodobniej poprawną. Tylko wyszukanie numeru portu może spowodować zwrócenie procesów, które tylko się 9999w nim znajdują, na przykład:
Najbardziej prawdopodobny kandydat zwykle kończy się jako pierwszy, ale jeśli proces zakończył się przed uruchomieniem skryptu, możesz zamiast tego otrzymać PID 12331 i zabić niewłaściwy proces.
Po trochę majstrowaniu przy scenariuszu doszedłem do tej akcji. Skopiuj i zapisz w pliku .bat:
FOR /F "usebackq tokens=5" %%i IN (`netstat -aon ^| find "3306"`) DO taskkill /F /PID %%i
Zmień „znajdź„ 3306 ”” w numerze portu, który musi być wolny. Następnie uruchom plik jako administrator. Zabije wszystkie procesy działające na tym porcie.
Odpowiedzi:
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:
źródło
nestat -aon | findstr 123456
Znajdź PID procesu, który używa portu w systemie Windows (np. Port: „9999”)
-a
Wyświetla wszystkie połączenia i porty nasłuchu.-o
Wyświetla identyfikator procesu będącego właścicielem, powiązany z każdym połączeniem.-n
Wyświetla adresy i numery portów w postaci liczbowej.Wynik:
Następnie zakończ proces za pomocą PID
/F
- Określa wymuszenie zakończenia procesu (ów).Uwaga: możesz potrzebować dodatkowych uprawnień (uruchamianych od administratora), aby zabić niektóre procesy
źródło
Jeśli chcesz to zrobić programowo, możesz użyć niektórych opcji podanych w następujący sposób w skrypcie PowerShell:
Jednak; pamiętaj, że im dokładniejszy możesz być, tym dokładniejszy będzie wynik PID. Jeśli wiesz, na którym hoście ma znajdować się port, możesz go bardzo zawęzić.
netstat -aon | findstr "0.0.0.0:9999"
zwróci tylko jedną aplikację i najprawdopodobniej poprawną. Tylko wyszukanie numeru portu może spowodować zwrócenie procesów, które tylko się9999
w nim znajdują, na przykład:Najbardziej prawdopodobny kandydat zwykle kończy się jako pierwszy, ale jeśli proces zakończył się przed uruchomieniem skryptu, możesz zamiast tego otrzymać PID 12331 i zabić niewłaściwy proces.
źródło
Po trochę majstrowaniu przy scenariuszu doszedłem do tej akcji. Skopiuj i zapisz w pliku .bat:
Zmień „znajdź„ 3306 ”” w numerze portu, który musi być wolny. Następnie uruchom plik jako administrator. Zabije wszystkie procesy działające na tym porcie.
źródło
Komenda:
Wynik:
Teraz wytnij identyfikator procesu „10396”, używając
for
polecenia w systemie Windows.Komenda:
Wynik:
10396
Jeśli chcesz wyciąć 4. cyfrę wartości oznacza „SŁUCHANIE”, a następnie wydaj polecenie w systemie Windows.
Komenda:
Wynik:
SŁUCHAJĄCY
źródło
Pomaga to znaleźć PID za pomocą numeru portu.
źródło
'lsof' is not recognized as an internal or external command.
Jednowierszowy PowerShell (zgodny z Core) ułatwiający tworzenie scenariuszy kopiowania:
Wynik:
Ten sam kod, przyjazny dla programistów:
źródło