encontrar o PID do processo usando um porto específico


visão geral

todos sabemos que um porto só pode ser usado por uma única aplicação ou serviço ao mesmo tempo. Por vezes, precisamos de saber que processo está a ouvir num porto específico.

neste tutorial, veremos diferentes abordagens para encontrar o processo de escuta em uma determinada porta no Linux.

root Permission

no Linux, apenas o utilizador raiz ou o dono do processo podem obter a informação detalhada do processo.,

Quando queremos verificar um processo de escuta em uma determinada porta, não sabemos a quem pertence o processo.

com permissão da raiz, podemos obter todas as informações necessárias sobre o processo, por exemplo, o identificador do processo.

portanto, podemos precisar iniciar nossas ferramentas de rede com o usuário raiz (ou com sudo).

Usando o netstat

O comando netstat é um membro do pacote net-tools.

no passado, ele veio pré-instalado em muitas distribuições Linux. No entanto, o pacote net-tools não foi atualizado desde 2011.,

devido à sua falta de suporte das funcionalidades modernas do kernel Linux e outras razões, o pacote net-tools tornou-se obsoleto.

dito isto, o netstat em si ainda é amplamente utilizado, então vamos dar uma olhada em como ele pode ajudar.

Em Primeiro Lugar, vamos ver um exemplo de saída do comando netstat:

com as opções ltnup, o netstat mostra-nos todos os portos em uso no exemplo acima.,

Vamos dar uma olhada no que a média opções:

  • l – mostrar apenas ouvir sockets
  • t – mostra as conexões TCP
  • n – mostrar endereços em um formato numérico
  • u – mostrar conexões UDP
  • p – mostra o processo de identificação/nome do programa

Se a gente reveja a saída acima, a última coluna é exatamente o que estamos procurando: o PID e o nome do Processo de escuta em uma porta específica.

Podemos simplesmente canalizar a saída do netstat para o comando grep para obter a informação do processo em uma porta individual.,

Por exemplo, vamos ver qual processo está escutando na porta 22:

root# netstat -ltnup | grep ':22'tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 575/sshd

Usando ss

Na seção anterior, discutimos que o pacote net-tools é preterido.

o comando ss é a substituição do comando netstat.

Agora vamos ver como usar o comando ss para ver que processo está ouvindo no porto 22:

se verificarmos as opções, descobrimos que as opções que passamos para o comando ss são as mesmas que passamos para o netstat.,

A única diferença é que estávamos fazendo uso do filtro de Estado do utilitário ss em vez de um processo grep extra para filtrar a saída.

Similar ao resultado do comando netstat, a informação esperada do processo também está na última coluna.

usando lsof

o comando lsof pode listar todos os ficheiros abertos num sistema Linux.,

podemos usar o comando lsof para localizar o processo usando uma porta específica com o-i :port_number opção:

root# lsof -i :22COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEsshd 575 root 3u IPv4 19373 0t0 TCP *:ssh (LISTEN)

As primeiras quatro colunas na saída acima de nos dizer o nome de processo de escuta na porta 22 e seu PID, proprietário, e o descritor de arquivo.

podemos passar vários -i :porta para o comando lsof para descobrir os processos escutando várias portas:

root# lsof -i :22 -i :68COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEsshd 575 root 3u IPv4 19373 0t0 TCP *:ssh (LISTEN)dhcpcd 8822 root 10u IPv4 49601 0t0 UDP *:bootpc

Usando fusor

O fusor utilitário exibe os processos que estão usando o nome de arquivos, sockets, ou sistemas de arquivos., Ele está incluído no Pacote psmisc e pré-instalado em muitas distribuições Linux modernas por padrão.

Podemos usar isso para visualizar a informação do processo em execução em uma porta específica. Mais uma vez vamos descobrir o PID da porta de processamento de escuta TCP 22:

root# fuser 22/tcp22/tcp: 575

a saída acima é bastante simples. Sabemos que o processo com o PID 575 está a ouvir na porta tcp 22.

no entanto, ele não nos diz informações detalhadas sobre o processo, por exemplo, Qual é o nome do processo 575? quem é o dono do processo? e assim por diante.,

Se quisermos obter mais detalhes sobre o processo, que pode passar a opção “-v” para o fusor comando para ter uma saída detalhada:

root# fuser -v 22/tcp USER PID ACCESS COMMAND22/tcp: root 575 F.... sshd

Usando a unidade de fusão de comando, também é possível verificar o processo de execução informação sobre várias portas TCP ou UDP com um tiro:

root# fuser -v 22/tcp 68/udp USER PID ACCESS COMMAND22/tcp: root 575 F.... sshd68/udp: root 8822 F.... dhcpcd

Conclusão

neste breve artigo, aprendemos quatro diferentes Linux utilitários de linha de comando com exemplos para descobrir as informações de que o processo de escuta em uma porta específica.,

são todas ferramentas muito poderosas para ter no nosso arsenal na linha de comandos Linux.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

Ir para a barra de ferramentas