Como usar o netstat para mostrar qual processo está escutando em uma porta


27

Estou em um laptop OS X Mountain Lion e tenho algumas caixas do Vagrant. Estou tentando descobrir qual processo está escutando na porta 8080. Minhas variações produzem centenas de linhas, mas nenhuma com número de porta específico. Estou assumindo algo como:

netstat -XXX | grep 8080

Isso ocorre em um ambiente doméstico ou profissional?
Lucas Kauffman

bem, recriar um servidor enviro localmente. se você quiser mudar para outro site, tudo bem. Versões diferentes do netstat suportam argumentos diferentes.
Timpone

Ok então senhor, tudo parece em ordem aqui, por favor, continue e tenha um bom dia.
Lucas Kauffman

Respostas:


52

Infelizmente, no OSX, você está preso ao BSD, netstatque não mostra o ID do processo conectado a uma determinada porta. O que você precisa fazer é usar lsof. A sintaxe que você precisa usar é:

lsof -i :8080

Isso imprimirá muitas informações, a maioria das quais você não se importa, mas os campos estão bem rotulados. Por exemplo, confira este exemplo de saída.

lsof -i :53237
COMMAND   PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
GoogleTal 927 guest   29u  IPv4 0x2c3f7f95244855c3      0t0  TCP localhost:53237 (LISTEN)

Isso indica que a porta 53237 está em uso pelo processo ID 927. Ao ler o campo COMMAND, lembre-se de que essa saída está truncada; na realidade, o nome completo do binário é GoogleTalkPlugin.


thx, isso me deixa muito mais próximo, é bastante genérico VBoxHeadl- existe alguma maneira de ver qual instância do VirtualBox (tem duas agora) ou estou perguntando demais (provavelmente a última). thx
timpone

@ timpone: Eu não sei o suficiente sobre o VirtualBox para ajudá-lo nesse caminho. Você pode verificar a linha de comando do processo para ver se ela está listada lá ou usar lsof -p PIDe navegar na lista de arquivos abertos até encontrá-la.
Scott pacote de

legal, thx para ajudar
Timpone

8

É isso que eu gosto de usar ao procurar o PID de uma porta de escuta. Para uso no Linux:netstat -tunlp

  • rede n
  • l portas de escuta
  • processo p
  • t tcp
  • udp

Informações adicionais podem ser encontradas nas páginas de manual.


-pnão lista os argumentos para o programa. Como eu vejo isso?
Jameshfisher

4
OP perguntou sobre OSX. -p não é uma opção na versão OSX do netstat.
Ted Bigham #

-pno OSX é port. Eu odeio as decisões dos desenvolvedores de apresentar argumentos diferentes para OSX e Linux ...
Daniel W.


4

Para mim, as duas linhas a seguir funcionam melhor para mostrar quais aplicativos têm portas de escuta abertas e, no túnel, lsof é totalmente multiplataforma:

netstat -Watn | grep LISTEN
lsof -Pnl +M -i -cmd | grep LISTEN

1

Para descobrir uma porta específica, use o comando netstat abaixo

  netstat -an | grep ':8080'

3
O OP perguntou sobre a obtenção do processo. Isso não mostra a identificação do processo.
Ted Bigham

1

De man netstat

-p, --program Mostra o PID e o nome do programa ao qual cada soquete pertence.

Eu costumo fazer isso: netstat -antup | grep 8080


hmm ... Isso soa como o que eu gostaria, mas isso está me dando diferentes opções no OS X para -p-p protocol Show statistics about protocol, which is either a well-known name
Timpone

@timpone: O -ppara exibir o PID é um comando GNU netstat, enquanto o OSX usa o BSD netstat.
9788 Scott's Pack

-pnão lista os argumentos para o programa. Como eu vejo isso?
Jameshfisher

1
OP perguntou sobre OSX. -p não é uma opção na versão OSX do netstat.
Ted Bigham #

-pno OSX é port. Eu odeio as decisões dos desenvolvedores de apresentar argumentos diferentes para OSX e Linux ...
Daniel W.

0

O comando abaixo mostra a conexão:

netstat -antop | grep :8080

Para visualizar o fluxo completo em tempo real, você pode usar watch:

watch -d -t -n 1 'lsof -n -i :8080'
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.