Wie kann ein Port geschlossen oder (gelöst?) Werden, der von einer Rogue-Anwendung offen gelassen wurde?

19

Ich benutze Fedora 13 64bit. Mein Eclipse-Programm startet einen Server an Port 9050, aber ich habe das Programm heruntergefahren. Eclipse fährt den Server nicht ordnungsgemäß herunter. Ein Neustart von Eclipse hat keine Auswirkungen.

Wie kann ich einen Port über die Befehlszeile zwangsweise schließen oder die Bindung aufheben?

Ich weiß, dass ein Neustart oder ein Ab- und Wiedereinschalten die Ports löscht, aber dieser Prozess ist für mich viel langsamer. Ich suche nach dem gewaltsamen Schließen des Ports in der Befehlszeile.

Kennzeichen
quelle

Antworten:

10

Die einzige Möglichkeit, einen Überwachungsport mit Gewalt zu schließen , besteht darin, den Prozess zu beenden, der ihn überwacht. Verwenden Sie lsof, netstat, fuser- als root - die Prozess - ID zu erfahren. Sobald der Prozess beendet ist (von selbst oder durch Beenden), räumt der Kernel automatisch alle Sockets auf, die er geöffnet hatte. (Es kann jedoch vorkommen, dass Programme für einige Minuten nicht am selben Port empfangen werden können. In diesem Fall können Sie nur warten.)

user1686
quelle
19
lsof -n -i

Finden Sie den Prozess, nach dem Sie suchen, und beenden Sie ihn.

Aus dem lsofHandbuch :

-n Diese Option verhindert die Konvertierung von Netzwerknummern in Hostnamen für Netzwerkdateien. Das Sperren der Konvertierung kann dazu führen, dass lsof schneller ausgeführt wird. Dies ist auch nützlich, wenn die Suche nach Hostnamen nicht ordnungsgemäß funktioniert.

-i [i] Mit dieser Option wird die Liste der Dateien ausgewählt, deren Internetadresse mit der in i angegebenen Adresse übereinstimmt. Wenn keine Adresse angegeben ist, wird mit dieser Option die Liste aller Internet- und x.25-Netzwerkdateien (HP-UX) ausgewählt.

Gleiche Antwort auf diese Frage denke ich.

jonnyflash
quelle
7
Aktivieren Sie | grep ":9050"(oder welche Portnummer auch immer), um die Ausgabe einfach zu filtern
isaacparrot
9

Sie können den fuserBefehl mit dem -kSchalter verwenden.

Zum Beispiel zu nahe Port 111, können Sie Folgendes tun: fuser -k 111/tcp (dies spart auch den Aufwand für die ID des Prozesses zu finden , sie zu töten , wie Fixierer implizit der Fall ist)

Beachten Sie, dass einige Prozesse nach dem Schließen automatisch neu gestartet werden. Dazu müssen Sie die Konfigurationsdatei jedes Prozesses überprüfen, um eine geeignete Problemumgehung zu finden.

tony9099
quelle
-3

Ich hatte das gleiche Problem, suchen Sie einfach nach dem Prozess, der diesen Port mit dem Befehl cmd unter Windows überwacht

netstat -a -b

Dann können Sie es mit dem Task-Manager herunterfahren

daqop
quelle
2
Entschuldigung, ich habe abgestimmt. Sie erwähnen "unter Windows". Der Parameter "-b" für "netstat", der die Namen der ausführbaren Dateien anzeigt, ist für Microsoft Windows spezifisch. (Unix-netstat-Variationen haben möglicherweise ähnliche Funktionen, verwenden jedoch normalerweise nicht denselben Parameter.) Da jedoch die Frage "Fedora" lautete, suchte der Fragesteller nach Informationen zu Fedora 13 64bit, einem anderen Betriebssystem. Die Manpage von netstat für Fedora gibt an, dass using -pdie PID anzeigt (mit der der Name der ausführbaren Datei identifiziert werden kann).
TOOGAM
1
Diese Antwort enthält mehrere Fehler. Die Antwort enthält einen Grammatikfehler, der hätte vermieden werden können. Die Antwort gilt auch nicht für Fedora, was im ersten Satz der Frage deutlich erwähnt wird. Es ist nicht so, dass die Frage diese Informationen nicht enthielt, als diese Antwort vor 30 Minuten eingereicht wurde. Die Frage wurde seit Juli 2011, also vor fast 5 Jahren, nicht mehr bearbeitet. Also nehme ich diese Antwort für das, was sie ist, eine "Ich auch" -Antwort, die sehr selten wirklich hilfreich ist.
Ramhound