W systemie Windows, co może szukać portu 8080 i próbować zabić proces, którego używa, za pomocą pliku .BAT?
windows
batch-file
process
kill-process
Mike Flynn
źródło
źródło
Odpowiedzi:
Oto polecenie, które pomoże Ci zacząć:
Kiedy masz pewność co do pliku wsadowego, usuń
@ECHO
.Zwróć uwagę, że może być konieczna nieznaczna zmiana tego dla różnych systemów operacyjnych. Na przykład w systemie Windows 7 możesz potrzebować
tokens=5
zamiasttokens=4
.Jak to działa
Umożliwia to wykonywanie
command
i zapętlanie danych wyjściowych. Każda linia zostanie upchnięta%variable
i może być rozszerzanaotherCommand
tyle razy, ile chcesz, gdziekolwiek chcesz.%variable
w praktyce może mieć tylko nazwę składającą się z jednej litery, np%V
.Pozwala to podzielić każdą linię białymi znakami, pobrać czwartą część w tej linii i włożyć ją do
%variable
(w naszym przypadku%%P
).delims
wygląda na pustą, ale ta dodatkowa przestrzeń jest w rzeczywistości znacząca.Po prostu uruchom go i dowiedz się. Zgodnie z pomocą wiersza poleceń, to „Wyświetla wszystkie połączenia i nasłuchujące porty.”, „Wyświetla adresy i numery portów w postaci liczbowej.” I „Wyświetla identyfikator procesu będącego właścicielem powiązanego z każdym połączeniem.”. Po prostu skorzystałem z tych opcji, ponieważ ktoś inny to zasugerował, i tak się złożyło;
Pobiera dane wyjściowe pierwszego polecenia lub programu (
netstat
) i przekazuje je do drugiego polecenia program (findstr
). Gdybyś używał tego bezpośrednio w linii poleceń, zamiast wewnątrz ciągu poleceń, użyłbyś|
zamiast^|
.To filtruje wszelkie dane wyjściowe, które są do niego przekazywane, zwracając tylko wiersze zawierające
:8080
.To zabija uruchomione zadanie przy użyciu identyfikatora procesu.
Jest to wymagane w plikach wsadowych. Jeśli zrobiłeś to w wierszu polecenia,
%P
zamiast tego użyłbyś.źródło
HELP FOR
w wierszu polecenia, aby zobaczyć wiele innych opcji, któreFOR
daje i sprawdzićnetstat -?
,findstr /?
iTaskKill /?
jeszcze więcej pomocy.tokens=4
to chyba Windows XP itokens=5
Windows 7. Również dobrym pomysłem jest/F
wymuszenie zabicia.Otwórz wiersz polecenia i uruchom następujące polecenia
, tutaj 3116 to identyfikator procesu
źródło
Aby znaleźć określony proces w wierszu poleceń, użyj poniższego polecenia tutaj 8080 to port używany przez proces
aby zabić proces użyj poniższego polecenia tutaj 21424 to identyfikator procesu
źródło
Użycie rozwiązania Merlyn spowodowało śmierć innych aplikacji, takich jak firefox. Te procesy korzystały z tego samego portu, ale nie jako nasłuchiwania:
na przykład:
Dlatego można je wykluczyć, dodając „LISTENING” do elementu findstr w następujący sposób:
źródło
Aby wyświetlić listę wszystkich procesów działających na porcie 8080, wykonaj następujące czynności.
Następnie, aby zabić proces, uruchom następujące polecenie
źródło
Dziękuję wszystkim, dodam tylko, że jakiś proces nie zostanie zamknięty, chyba że przełącznik siły / F zostanie również wysłany z TaskKill. Również z przełącznikiem / T wszystkie wątki wtórne procesu zostaną zamknięte.
W przypadku usług konieczne będzie pobranie nazwy usługi i wykonanie:
źródło
Tylko do ukończenia:
Chciałem zabić wszystkie procesy podłączone do określonego portu, ale nie proces nasłuchujący
polecenie (w powłoce cmd) dla portu 9001 to:
findstr :
netstat :
Działa, ponieważ netstat wypisuje port źródłowy, port docelowy, a następnie ESTABLISHED
źródło
Utworzono plik bat z poniższą zawartością, akceptuje dane wejściowe dla numeru portu
Na koniec kliknij „Enter”, aby wyjść.
źródło
Jeśli chcesz zabić proces, który nasłuchuje na porcie 8080, możesz użyć PowerShell. Po prostu połącz polecenie
Get-NetTCPConnection
cmdlet zStop-Process
.Przetestowany i powinien działać z PowerShell 5 na Windows 10 lub Windows Server 2016. Myślę jednak, że powinien działać również na starszych wersjach Windows, które mają zainstalowany PowerShell 5.
Oto przykład:
źródło
Podobna do odpowiedzi Merlyna, ale ta obsługuje również te przypadki:
Oto ona:
źródło
Kroki:
Przejdź do
conf
folderu na serwerze Apache Tomcat . W moim przypadku jest tak,apache-tomcat-7.0.61\conf
jak używam apache-tomcat-7.0.61Otwórz
server.xml
i zmień numer portu z 8080 na inny, jak chcesz. Na przykład: 8081,8082,8087 itpTeraz przejdź do
bin
folderu i uruchomshutdown.bat
Teraz zrestartuj serwer przez eclipse.
Teraz Twój projekt będzie działał bez zakłóceń.
źródło
Jeśli ktoś szuka skryptu Powershell:
Ta funkcja w zasadzie robi to, co robią powyższe funkcje, ale jest w formacie skryptów Powershell, więc możesz ją dodać do swojego profilu Powershell. Aby znaleźć lokalizację swojego profilu, przejdź do PowerShell i wpisz
echo $profile
źródło
netstat
narzędzie otaczające oparte na programie PowerShell .Wklej to do wiersza poleceń
Jeśli chcesz użyć go w partii,
%%P
zamiast%P
źródło
netstat
narzędzie jest przetłumaczone na inne językijeśli przez system nie możesz zakończyć zadania. spróbuj tego polecenia
x:> net stop http / y
źródło