Zwalniasz port TCP / IP?


Odpowiedzi:


214

Jak powiedzieli inni, będziesz musiał zabić wszystkie procesy, które nasłuchują na tym porcie. Najłatwiej byłoby to zrobić za pomocą polecenia fuser (1). Na przykład, aby zobaczyć wszystkie procesy nasłuchujące żądań http na porcie 80 (uruchom jako root lub użyj sudo):

# fuser 80/tcp

Jeśli chcesz je zabić, po prostu dodaj opcję -k.


1
Okazało się, że wysłanie żądania do portu również go czyści (chociaż nie jestem ekspertem od Linuksa)
Matej

1
Aby zainstalować fuser na Debianie: sudo apt-get install psmisc ( bitflop.com/document/107 )
Korneel

1
Zadziałało, ale musiałem też zainstalować psmisc na CentOs 7 ( sudo yum install psmisc)
Marlon Bernardes

1
kill -9 $(fuser 80/tcp 2>/dev/null)
Hanynowsky

76

Aby zabić określony port w Linuksie, użyj poniższego polecenia

sudo fuser -k Port_Number/tcp

zamień numer_portu na zajęty port.


6
To faktycznie zabija proces, który otworzył port, a nie sam port.
vinayc

16

Możesz użyć tcpkill(części dsniffpakietu), aby zabić połączenie na porcie, którego potrzebujesz:

sudo tcpkill -9 port PORT_NUMBER

11
to po prostu wisi$ sudo tcpkill -9 port 5432 tcpkill: listening on lxcbr0 [port 5432]
Anentropic

16

W typie terminala:

netstat -anp|grep "port_number"

Pokaże szczegóły portu. Przejdź do ostatniej kolumny. Będzie w tym formacie. Na przykład: - PID / java

następnie wykonaj:

kill -9 PID. Worked on Centos5

Dla Maca:

lsof -n -i :'port-number' | grep LISTEN

Przykładowa odpowiedź:

java   4744 (PID)  test  364u  IP0 asdasdasda   0t0  TCP *:port-number (LISTEN)

a następnie wykonaj:

kill -9 PID 

Pracował na Macbooku


oczywiście to nie działa, jeśli kolumna PID jest pusta dla tego portu
Anentropic

1
... i dzieje się tak, jeśli nie masz uprawnień do oglądania procesu ... spróbuj sudo netstatzobaczyć
PIDy

Próbowałem zabić port na instancji amazon ec2 za pomocą putty cli. Forever powiedział, że nie ma uruchomionych procesów, ale port (4200 dla aplikacji kątowej) był nadal otwarty.To jedyne polecenie, które działało dla mnie.
vtechmonkey,

9

"netstat --programs"Komenda daje przetwarzania informacji, przy założeniu, że korzeń. Wtedy będziesz musiał zabić "obrażający" proces, który może zacząć się ponownie, tylko po to, by cię zdenerwować :-).

Co tak naprawdę próbujesz tutaj osiągnąć? Rozwiązania będą się różnić w zależności od procesów obsługujących te porty.


8

Aby sprawdzić wszystkie porty:

netstat -lnp

Aby zamknąć otwarty port:

fuser -k port_no/tcp

Przykład:

fuser -k 8080/tcp

W obu przypadkach w sudorazie potrzeby możesz użyć polecenia.


7

Zakończ proces nasłuchujący danego portu. Myślę, że netstat pokazuje identyfikatory procesów.


3
netstat -anp | grep <port> ostatnia kolumna zawiera proces
user1747935

2

Jeśli naprawdę chcesz natychmiast zabić proces, wysyłasz mu sygnał KILL zamiast sygnału TERM (to drugie żądanie zatrzymania, pierwsze zadziała natychmiast bez czyszczenia). Jest to łatwe do zrobienia:

kill -KILL <pid>

Należy jednak pamiętać, że w zależności od zatrzymywanego programu jego stan może ulec poważnemu uszkodzeniu. Zwykle chcesz wysłać sygnał KILL tylko wtedy, gdy normalne zakończenie nie działa. Zastanawiam się, jaki jest podstawowy problem, który próbujesz rozwiązać i czy zabijanie jest właściwym rozwiązaniem.


0

Myślę, że jedynym sposobem będzie zatrzymanie procesu, który otworzył port.



-14

Wyłączenie komputera zawsze kończy proces za mnie.


wyłączanie serwera jest rzadkie.
waqas

23
czy dostałeś swoją „najzabawniejszą” odznakę?
jplandrain

Nie ma potrzeby wyłączania komputera.
Anil Chahal

Najlepszy pomysł w historii 10/10
Valentin Roudge

10
w przeciwieństwie do niektórych innych odpowiedzi, to z pewnością zadziała
Anentropic
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.