Zwalniasz port TCP / IP?

146

netstat -tulnap pokazuje mi, jakie porty są używane. Jak zwolnić port w systemie Linux?

informatik01
źródło

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.

uzi
źródło
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.

Anil Chahal
źródło
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
AlexT
źródło
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

user2332505
źródło
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.

paxdiablo
źródło
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.

Vinayak
źródło
7

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

Gleb
źródło
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.

Paul de Vrieze
źródło
0

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

Tilo Prütz
źródło
-5

sudo killall -9 "nazwa procesu"

Zonxwedop
źródło
-14

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

Zonxwedop
źródło
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