Em uma máquina Linux, estou tentando iniciar o servidor Glassfish.
./startserv
Isso retorna a seguinte mensagem:
There is a process already running using the admin port 4848 -- it is probably another instance of a Glassfish server
Tentei identificar qual processo é esse com o seguinte comando:
lsof -t -i tcp:4848
Em outra máquina em que o Glassfish está sendo executado, este comando retorna o ID do processo usado pelo Glassfish. Porém, na máquina em que estamos tendo o problema, nada é retornado.
Qual a melhor forma de identificar e encerrar o processo pela porta 4848, visto que lsof -t -i tcp:4848
não está ajudando?
Obrigado
Responder1
Provavelmente há duas coisas acontecendo aqui. Uma é que há algo escutando na porta e lsof e amigos estão faltando ou o script de inicialização/mensagem de erro está confuso.
Namespaces de rede podem ocultar a porta, mas se você quiser consultar diretamente o sistema de arquivos proc, tente
grep 12f0 /proc/net/tcp
grep 12f0 /proc/net/tcp6
12f0 é 4848 em hexadecimal e esses arquivos são onde o kernel armazena as informações sobre os soquetes TCPv4 e TCPv6.
Se você obtiver linhas correspondentes, então realmente há algo ouvindo a porta e suas ferramentas são sus. Nenhum hit significa que você tem namespaces em jogo ou o script de inicialização está sendo executado.
Você também pode verificar se o soquete está realmente em uso com o netcat
nc -l 4848
Se estiver silencioso, então está tudo bem, se reclamar do soquete em uso, então realmente está em uso e você precisa verificar se suas ferramentas estão ok e os namespaces.