Einen TCP / IP-Port freigeben?


Antworten:


214

Wie die anderen gesagt haben, müssen Sie alle Prozesse beenden, die diesen Port abhören. Der einfachste Weg, dies zu tun, wäre die Verwendung des Befehls fuser (1). So zeigen Sie beispielsweise alle Prozesse an, die auf Port 80 auf http-Anforderungen warten (als Root ausführen oder sudo verwenden):

# fuser 80/tcp

Wenn Sie sie töten möchten, fügen Sie einfach die Option -k hinzu.


1
Ich fand, dass das Senden einer Anfrage an den Port auch bereinigt (ich bin jedoch kein Linux-Experte)
Matej

1
So installieren Sie die Fixiereinheit unter Debian: sudo apt-get install psmisc ( bitflop.com/document/107 )
Korneel

1
Es hat funktioniert, aber ich musste psmisc auch auf CentOs 7 ( sudo yum install psmisc) installieren
Marlon Bernardes

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

76

Um einen bestimmten Port unter Linux zu beenden, verwenden Sie den folgenden Befehl

sudo fuser -k Port_Number/tcp

Ersetzen Sie Port_Number durch Ihren belegten Port.


6
Dies beendet tatsächlich den Prozess, der den Port geöffnet hat, und nicht den Port selbst.
Vinayc

16

Sie können tcpkill(Teil des dsniffPakets) verwenden, um die Verbindung zu dem Port zu beenden, den Sie benötigen:

sudo tcpkill -9 port PORT_NUMBER

11
Dies hängt nur$ sudo tcpkill -9 port 5432 tcpkill: listening on lxcbr0 [port 5432]
Anentropic

16

Im Terminaltyp:

netstat -anp|grep "port_number"

Es werden die Portdetails angezeigt. Zur letzten Spalte gehen. Es wird in diesem Format sein. Zum Beispiel: - PID / Java

dann ausführen:

kill -9 PID. Worked on Centos5

Für MAC:

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

Beispielantwort:

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

und dann ausführen:

kill -9 PID 

Arbeitete auf Macbook



1
... und das passiert, wenn Sie nicht die Erlaubnis haben, den Prozess zu sehen ... versuchen Sie sudo netstattatsächlich, die PIDs zu sehen :)
Anentropic

Ich habe versucht, einen Port auf einer Amazon Ec2-Instanz über Putty Cli zu töten. Für immer gesagt, es wurden keine Prozesse ausgeführt, aber der Port (4200 für eine eckige App) war noch offen. Dies ist der einzige Befehl, der für mich funktioniert hat.
Vtechmonkey

9

Der "netstat --programs"Befehl gibt Ihnen die Prozessinformationen, vorausgesetzt, Sie sind root. Dann musst du den "beleidigenden" Prozess beenden, der möglicherweise wieder startet, nur um dich zu ärgern :-).

Was versuchst du eigentlich hier zu erreichen? Die Lösungen variieren je nach den Prozessen, die diese Ports enthalten.


8

So überprüfen Sie alle Ports:

netstat -lnp

So schließen Sie einen offenen Port:

fuser -k port_no/tcp

Beispiel:

fuser -k 8080/tcp

In beiden Fällen können Sie den sudoBefehl bei Bedarf verwenden.


7

Beenden Sie den Prozess, der den betreffenden Port abhört. Ich glaube, netstat zeigt Ihnen, wie Sie IDs verarbeiten.


3
netstat -anp | grep <port> die letzte Spalte hat den Prozess
user1747935

2

Wenn Sie einen Prozess wirklich sofort beenden möchten, senden Sie ihm ein KILL-Signal anstelle eines TERM-Signals (letzteres ist eine Aufforderung zum Stoppen, das erste wird sofort ohne Bereinigung wirksam). Es ist einfach zu tun:

kill -KILL <pid>

Beachten Sie jedoch, dass der Status des Programms, das Sie gerade stoppen, möglicherweise stark beschädigt wird. Normalerweise möchten Sie nur dann ein KILL-Signal senden, wenn die normale Beendigung nicht funktioniert. Ich frage mich, was das zugrunde liegende Problem ist, das Sie zu lösen versuchen, und ob das Töten die richtige Lösung ist.


0

Ich denke, der einzige Weg wird sein, den Prozess zu stoppen, der den Port geöffnet hat.



-14

Das Herunterfahren des Computers beendet den Prozess für mich immer.


Das Herunterfahren eines Servercomputers ist selten.
Waqas

23
Hast du dein "lustigstes" Abzeichen bekommen?
Jplandrain

Sie müssen Ihren Computer nicht herunterfahren.
Anil Chahal

Beste Idee aller Zeiten 10/10
Valentin Roudge

10
Im Gegensatz zu einigen anderen Antworten wird dies sicherlich funktionieren
Anentropic
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.