Cómo matar procesos 'invisibles' usando el puerto

Cómo matar procesos 'invisibles' usando el puerto

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

información relacionada