2009-04-15 13 views

Antwort

7

Töten Sie den Prozess, der den fraglichen Port abhört. Ich glaube, Netstat zeigt Ihnen Prozess-IDs.

+3

netstat -anp | grep die letzte Spalte ist der Prozess – user1747935

0

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

9

Der Befehl "netstat --programs" gibt Ihnen die Prozessinformationen, vorausgesetzt, Sie sind root. Dann müssen Sie den "beleidigenden" Prozess beenden, der vielleicht wieder anläuft, nur um Sie zu ärgern :-).

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

160

Wie die anderen bereits gesagt haben, müssen Sie alle Prozesse beenden, die diesen Port überwachen. Der einfachste Weg dazu wäre der Befehl fuser (1). Zum Beispiel, alle Prozesse zu hören für HTTP-Anfragen auf Port 80 (als root ausführen oder sudo), um zu sehen:

# fuser 80/tcp 

Wenn Sie möchten, um sie zu töten, dann nur die Option -k hinzuzufügen.

+1

ich festgestellt, dass eine Anfrage an den Port sendet es auch reinigt (i bin kein Linuxexperte aber) –

+1

Um fuser auf Debian zu installieren: sudo apt-get install psmisc (http://bitflop.com/document/107) – Korneel

+1

Es funktionierte, aber ich musste psmisc auch auf CentOs 7 installieren ('sudo yum install psmisc') –

2

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

kill -KILL <pid> 

Beachten Sie, jedoch, dass je nach Programm Sie zu stoppen, kann sein Zustand schlecht beschädigt werden, wenn dies zu tun. 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, dass Sie versuchen zu lösen und ob das Töten die richtige Lösung ist.

-12

den Computer immer herunterfahren tötet den Prozess für mich.

+0

Herunterfahren eines Servers ist rar e. – waqas

+13

hast du dein "witzigstes" Abzeichen bekommen? – jplandrain

+0

Sie müssen Ihren Computer nicht herunterfahren. –

12

können Sie verwenden tcpkill (Teil des dsniff Paket), um die Verbindung zu töten, die auf dem Port ist was Sie brauchen:

sudo tcpkill -9 port PORT_NUMBER 
+0

Dies ist die einzige Methode, die für mich funktionierte. – brousch

+5

das hängt einfach '$ sudo tcpkill -9 port 5432 tcpkill: lauscht auf lxcbr0 [port 5432]' – Anentropic

40

Um ein einen bestimmten Port in Linux unter Befehl töten

sudo fuser -k Port_Number/tcp 

ersetzen Sie Port_Number durch Ihren belegten Port.

+1

Das tötet tatsächlich den Prozess, der den Port und nicht den Port selbst öffnete. – vinayc

3

In Terminaltyp:

netstat -anp|grep "port_number"

Es wird die Port Details zeigen. Gehe zur letzten Spalte. Es wird in diesem Format sein.Zum Beispiel: - PID/java

dann ausführen:

kill -9 PID. Worked on Centos5

+0

offensichtlich funktioniert das nicht, wenn die PID-Spalte für diesen Port leer ist – Anentropic

+1

... und das passiert, wenn Sie keine Erlaubnis haben, den Prozess zu sehen ... versuchen Sie 'sudo netstat', um tatsächlich die PIDs zu sehen :) – Anentropic

+0

funktioniert nicht auf mac –