So beenden Sie „unsichtbare“ Prozesse über den Port

So beenden Sie „unsichtbare“ Prozesse über den Port

Versuche auf einer Linux-Maschine, den Glassfish-Server zu starten.

./startserv

Dies gibt die folgende Meldung zurück:

There is a process already running using the admin port 4848 -- it is probably another instance of a Glassfish server

Habe versucht mit folgendem Befehl herauszufinden um welchen Prozess es sich handelt:

lsof -t -i tcp:4848

Auf einem anderen Computer, auf dem Glassfish ausgeführt wird, gibt dieser Befehl die von Glassfish verwendete Prozess-ID zurück. Auf dem Computer, auf dem das Problem auftritt, wird jedoch nichts zurückgegeben.

Was ist die beste Möglichkeit, den Prozess über Port 4848 zu identifizieren und zu beenden, wenn das lsof -t -i tcp:4848nicht hilft?

Danke

Antwort1

Hier sind wahrscheinlich zwei Dinge im Spiel. Entweder lauscht etwas auf dem Port und lsof und seine Freunde übersehen es oder das Startskript/die Fehlermeldung ist verwirrend.

Netzwerk-Namespaces können den Port verbergen, aber wenn Sie das Proc-Dateisystem direkt abfragen möchten, versuchen Sie

grep 12f0 /proc/net/tcp
grep 12f0 /proc/net/tcp6

12f0 hat die Größe 4848 in Hex und in diesen Dateien speichert der Kernel die Informationen zu TCPv4- und TCPv6-Sockets.

Wenn Sie übereinstimmende Zeilen erhalten, dann hört tatsächlich etwas am Port zu und Ihre Tools sind verdächtig. Kein Treffer bedeutet, dass entweder Namespaces im Spiel sind oder das Startskript nicht funktioniert.

Ob der Socket tatsächlich belegt ist, lässt sich auch mit netcat prüfen.

nc -l 4848

Wenn es stumm ist, ist alles in Ordnung. Wenn es sich über die Verwendung eines Sockets beschwert, wird dieser tatsächlich verwendet und Sie müssen prüfen, ob Ihre Tools und Namespaces in Ordnung sind.

verwandte Informationen