Come usare netstat per mostrare quale processo è in ascolto su una porta


27

Sono su un laptop OS X Mountain Lion e ho un paio di scatole Vagrant su di esso. Sto cercando di capire quale processo è in ascolto sulla porta 8080. Le mie variazioni producono come un centinaio di righe ma nessuna con un numero di porta specifico. Sto assumendo qualcosa di simile:

netstat -XXX | grep 8080

È in un ambiente domestico o professionale?
— Lucas Kauffman,

beh, ricreando un server enviro localmente. se vuoi spostarti su un sito diverso, va bene. Versioni diverse di netstat supportano argomenti diversi.
— timpone,

Va bene allora signore, qui tutto sembra in ordine, per favore continuate e buona giornata.
— Lucas Kauffman,

Risposte:


52

Sfortunatamente su OSX sei bloccato con il BSD netstatche non ti mostrerà l'ID del processo che è collegato a una determinata porta. Quello che devi fare invece è usare lsof. La sintassi che dovrai usare è:

lsof -i :8080

Questo stamperà gobs di informazioni, la maggior parte delle quali non ti interessano, ma i campi sono ben etichettati. Ad esempio, dai un'occhiata a questo esempio di output.

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

Questo mi dice che la porta 53237 è utilizzata dall'ID processo 927. Quando leggi il campo COMMAND tieni presente che questo output viene troncato, in realtà il nome completo del binario è GoogleTalkPlugin.


grazie, questo mi avvicina molto di più, sta andando a un abbastanza generico VBoxHeadl- c'è un modo per vedere quale istanza di VirtualBox (ne ho due in questo momento) o sto chiedendo troppo (probabilmente quest'ultimo). thx
— timpone,

@timpone: non so abbastanza su VirtualBox per aiutarti in questo percorso. Puoi controllare la riga di comando del processo per vedere se è elencato lì, oppure usare lsof -p PIDe sfogliare l'elenco dei file aperti fino a quando non lo trovi.
— Scott Pack

bello, grazie per l'aiuto
— timpone

8

Questo è quello che mi piace usare quando cerco il PID di una porta di ascolto. Per uso Linux:netstat -tunlp

  • n rete
  • l porte di ascolto
  • processo p
  • t tcp
  • udp

Ulteriori informazioni sono disponibili nelle pagine man.


-pnon elenca gli argomenti al programma. Come vedo questo?
— jameshfisher,

4
OP ha chiesto informazioni su OSX. -p non è un'opzione sulla versione OSX di netstat.
— Ted Bigham,

-psu OSX è port. Odio le decisioni degli sviluppatori di fare diversi argomenti per OSX e Linux ...
— Daniel W.


4

Per me, le seguenti due linee funzionano meglio per mostrare quali app hanno porte di ascolto aperte e tunnel, lsof è completamente multipiattaforma:

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

1

Per scoprire la porta specifica usare sotto il comando netstat

  netstat -an | grep ':8080'

3
OP ha chiesto informazioni su come ottenere il processo. Questo non mostra l'id del processo.
— Ted Bigham,

1

Da man netstat

-p, --program Mostra il PID e il nome del programma a cui appartiene ogni socket.

Di solito faccio solo questo: netstat -antup | grep 8080


hmm ... sembra quello che mi piacerebbe ma questo mi sta dando diverse opzioni su OS X per -p-p protocol Show statistics about protocol, which is either a well-known name
— timpone

@timpone: Il -pper visualizzare il PID è un comando GNU netstat mentre OSX usa BSD netstat.
— Scott Pack

-pnon elenca gli argomenti al programma. Come vedo questo?
— jameshfisher,

1
OP ha chiesto informazioni su OSX. -p non è un'opzione sulla versione OSX di netstat.
— Ted Bigham,

-psu OSX è port. Odio le decisioni degli sviluppatori di fare diversi argomenti per OSX e Linux ...
— Daniel W.

0

Il comando seguente mostra la connessione:

netstat -antop | grep :8080

Per visualizzare il flusso completo in tempo reale è possibile utilizzare watch:

watch -d -t -n 1 'lsof -n -i :8080'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.