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:4848
nicht 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.