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
timpone
fonte
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.

Scott Pack
fonte
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.

CDSU
fonte
-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.
5

Eu estava no processo de modificação netstatno OS X para fornecer esse recurso e me deparei com o fato de que -vvocê terá o pid associado a um soquete.

Sean Hamilton
fonte
O -vaumenta o nível de verbosidade e está documentado. developer.apple.com/library/mac/documentation/Darwin/Reference/…
3/15/15
1
desculpe, eu quis dizer que o fato de imprimir o PID não está documentado, não que a opção exista.
Sean Hamilton
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
Tomachi
fonte
1

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

  netstat -an | grep ':8080'

fonte
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

Hermes Conrad
fonte
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'
suhas
fonte