En una máquina Linux, estoy intentando iniciar el servidor Glassfish.
./startserv
Esto devuelve el siguiente mensaje:
There is a process already running using the admin port 4848 -- it is probably another instance of a Glassfish server
Intenté identificar qué proceso es este con el siguiente comando:
lsof -t -i tcp:4848
En otra máquina en la que se esté ejecutando Glassfish, este comando devuelve la identificación del proceso utilizado por Glassfish. Sin embargo, en la máquina en la que tenemos el problema, no se devuelve nada.
¿Cuál es la mejor manera de identificar y finalizar el proceso utilizando el puerto 4848, dado que lsof -t -i tcp:4848
no ayuda?
Gracias
Respuesta1
Probablemente estén sucediendo dos cosas aquí. Una es que hay algo escuchando en el puerto y a lsof y sus amigos les falta o el script de inicio/mensaje de error es confuso.
Los espacios de nombres de red pueden ocultar el puerto, pero si desea consultar directamente el sistema de archivos proc, intente
grep 12f0 /proc/net/tcp
grep 12f0 /proc/net/tcp6
12f0 es 4848 en hexadecimal y esos archivos son donde el kernel almacena la información sobre los sockets TCPv4 y TCPv6.
Si obtiene líneas coincidentes, entonces realmente hay algo escuchando el puerto y sus herramientas son sus. Ningún resultado significa que tiene espacios de nombres en juego o que el script de inicio se está reproduciendo.
También puedes comprobar si el socket está realmente en uso con netcat.
nc -l 4848
Si está en silencio, entonces está bien, si se queja de que el socket está en uso, entonces realmente está en uso y necesita verificar que sus herramientas y espacios de nombres estén bien.