Pular para o conteúdo principal

Usando LSOF para verificar porta usada por determinado processo


Outro dia fui realizar alguns testes em aplicações rodando no JBoss e verifiquei que nenhuma aplicação estava funcionando. Verifiquei no log do JBoss que o serviço iniciava e ocorria vários erros, informando que não conseguia fazer o deploy das aplicações.
Mesmo parando o serviço do JBoss, verifiquei com a ferramenta nmap que a porta 8080 continuava aberta.



# nmap -p 8080 localhost
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2012-11-12 14:09 BRST
Interesting ports on localhost.localdomain (127.0.0.1):
PORT     STATE SERVICE
8080/tcp open  http-proxy
Nmap finished: 1 IP address (1 host up) scanned in 0.012 seconds

Com o comando netstat verifiquei que realmente a porta estava na escuta por conexões.

# netstat -ntal | grep 8080
tcp        0      0 0.0.0.0:8080                0.0.0.0:*                   LISTEN

Atualização: Com a ferramenta netstat também é possível ver qual o número do processo que está utilizando determinada porta com a opção -p. Porém, neste post explicarei como obter o número do processo utilizando a ferramenta LSOF. O LSOF (list open files) é a ferramenta para listar os arquivos abertos no sistema. Utilizando a opção -i tcp o sistema irá retornar apenas os arquivos abertos por conexões tcp.

# lsof -i tcp
redir     10909     root    3u  IPv4 442118       TCP *:webcache (LISTEN)

Dessa forma, se filtrarmos a saída do comando com o grep, não teremos o resultado esperado.

# lsof -i tcp | grep 8080

Isso porque o lsof por padrão faz a conversão das portas pelos serviços que as utilizam. Para desabilitar a conversão na execução do lsof, usamos a opção -P.

# lsof -i tcp -P | grep 8080
redir      12170     root  159u  IPv4 878525       TCP *:8080 (LISTEN)

A segunda coluna nos mostra qual o PID do processo em execução e que está utilizando a porta 8080. Com isso, podemos matar o processo e iniciarmos o serviço que deve utilizar a porta.

Se você não filtrar a saída do lsof, verá que as colunas exibidas por padrão do lsof são:

COMMAND     PID     USER   FD   TYPE DEVICE SIZE NODE NAME

Espero que está dica poupe muito tempo na busca por soluções a respeito de problemas de portas abertas por outros serviços que não seja o que você está acostumado a rodar. Isso acontece muito em ambientes administrados por muitas pessoas. O lsof é uma ferramente bastante poderosa e seu uso deve ser colocado em prática. Para mais detalhes: man lsof.

Comentários

  1. Muito boa a dica, o fuser também é interessante:

    $ fuser 8080/tcp

    ResponderExcluir
  2. Só uma correção. Com a opção -p do netstat é possível sim ver o ID e o nome do processo que mantém uma porta aberta.

    $ netstat -tanp | grep 8080

    ResponderExcluir

Postar um comentário

Postagens mais visitadas deste blog

Integração Zabbix + GLPI

Versão atualizada Essa atualização é em consequência de pedidos vindo dos gringos e também a pedido da Zabbix SIA por ser o 4.º conteúdo mais popular no recém criado  https://share.zabbix.com/  e o 1.º entre os brasileiros.   Para conferir a lista dos mais populares, acesse  https://share.zabbix.com/popular Há um tempo que eu queria desenvolver algo para integrar o Zabbix a algum outro sistema. Esse ano surgiu uma oportunidade de implementação de alguns sistemas de inventário e gerenciamento de chamados. Logo pensei em fazer uma integração para abertura e fechamento automático dos tickets quando ocorresse algum problema que o Zabbix identificasse. Porém, o meu entusiasmo foi logo caindo quando eu percebi que não era uma coisa tão trivial de se fazer. Pesquisei várias fontes em busca de informações a respeito dessa integração, porém não passavam de tutoriais ensinando como abrir tickets no GLPI enviando um e-mail. Estudando mais um pouco o GLPI, percebi q...

Instalação do Zabbix 3 no Debian 8

Saiu a tão esperada versão estável do Zabbix 3. Neste artigo veremos como é simples realizar a instalação via pacote, usando o repositório oficial do Zabbix, no Debian 8. Esse tutorial parte do princípio que o seu sistema Debian 8 já esteja instalado e atualizado. Baixe o pacote para instalar o repositório do Zabbix no Debian 8. wget http://repo.zabbix.com/zabbix/3.0/debian/pool/main/z/zabbix-release/zabbix-release_3.0-1+jessie_all.deb Instale o pacote dpkg -i zabbix-release_3.0-1+jessie_all.deb  Será criado o arquivo /etc/apt/sources.lst.d/zabbix.list Sincronize os índices dos pacotes apt-get update Instalação do backend e base de dados Chegou a hora de instalarmos o Zabbix da forma mais simples possível. apt-get install zabbix-server-mysql zabbix-frontend-php zabbix-agent zabbix-get Após baixar os pacotes, surgirá a seguinte tela: Informe uma senha para o usuário root do MySQL. Na próxima tela, confirme a senha. Agora, é só aguardar...