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.