Jak używać netstat, aby pokazać, jaki proces nasłuchuje na porcie


27

Jestem na laptopie OS X Mountain Lion i mam na sobie kilka Vagrantowych pudełek. Próbuję dowiedzieć się, który proces nasłuchuje na porcie 8080. Moje odmiany produkują jak sto linii, ale żaden nie ma określonego numeru portu. Zakładam coś takiego:

netstat -XXX | grep 8080

Czy dzieje się tak w domu, czy w środowisku zawodowym?
Lucas Kauffman

cóż, lokalne odtwarzanie serwera enviro. jeśli chcesz przenieść się na inną stronę, to w porządku. Różne wersje netstat obsługują różne argumenty.
timpone

Okej, proszę pana, wszystko wydaje się tutaj w porządku, proszę kontynuować i miłego dnia.
Lucas Kauffman

Odpowiedzi:


52

Niestety w OSX utknąłeś z BSD, netstatktóra nie pokaże ci ID procesu dołączonego do danego portu. Zamiast tego musisz użyć lsof. Należy użyć następującej składni:

lsof -i :8080

Spowoduje to wydrukowanie mnóstwa informacji, z których większość nie ma znaczenia, ale pola są dobrze oznaczone. Na przykład sprawdź to przykładowe wyjście.

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

To mówi mi, że port 53237 jest używany przez identyfikator procesu 927. Podczas odczytywania pola COMMAND należy pamiętać, że dane wyjściowe są obcinane, w rzeczywistości pełna nazwa pliku binarnego to GoogleTalkPlugin.


dzięki, zbliża mnie to znacznie, przechodzi do dość ogólnej VBoxHeadl- czy jest jakiś sposób, aby zobaczyć, która instancja VirtualBox (mam teraz dwie), czy też pytam o wiele za dużo (prawdopodobnie to drugie). thx
timpone

@timpone: Nie wiem wystarczająco dużo o VirtualBox, aby ci pomóc na tej drodze. Możesz sprawdzić wiersz polecenia procesu, aby zobaczyć, czy jest tam wymieniony, lub lsof -p PIDprzeglądać listę otwartych plików, aż go znajdziesz.
Scott Pack

super,
dziękuję

8

Tego właśnie lubię używać, gdy szukam PID portu nasłuchującego. W przypadku systemu Linux:netstat -tunlp

  • n sieć
  • l nasłuchiwanie portów
  • proces p
  • t tcp
  • udp

Dodatkowe informacje można znaleźć na stronach podręcznika man.


-pnie wyświetla argumentów programu. Jak to widzę?
jameshfisher

4
OP zapytał o OSX. -p nie jest opcją w wersji netstat OSX.
Ted Bigham,

-pna OSX jest port. Nienawidzę decyzji programistów, by przedstawiać różne argumenty dla OSX i Linuksa ...
Daniel W.


4

Dla mnie następujące dwie linie najlepiej sprawdzają się, które aplikacje mają otwarte porty nasłuchiwania, a tunel, lsof jest w pełni wieloplatformowy:

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

1

Aby znaleźć konkretny port, użyj polecenia netstat

  netstat -an | grep ':8080'

3
OP zapytał o uzyskanie procesu. To nie pokazuje identyfikatora procesu.
Ted Bigham,

1

Od man netstat

-p, --program Pokazuje PID i nazwę programu, do którego należy każde gniazdo.

Zwykle po prostu to robię: netstat -antup | grep 8080


hmm ... to brzmi jak chciałbym, ale daje mi to różne opcje w OS X dla -p-p protocol Show statistics about protocol, which is either a well-known name
timpone

@timpone: -pWyświetlenie PID jest poleceniem GNU netstat, podczas gdy OSX używa BSD netstat.
Scott Pack

-pnie wyświetla argumentów programu. Jak to widzę?
jameshfisher

1
OP zapytał o OSX. -p nie jest opcją w wersji netstat OSX.
Ted Bigham,

-pna OSX jest port. Nienawidzę decyzji programistów, by przedstawiać różne argumenty dla OSX i Linuksa ...
Daniel W.

0

Poniższe polecenie pokazuje połączenie:

netstat -antop | grep :8080

Aby wyświetlić pełny przepływ w czasie rzeczywistym, możesz użyć watch:

watch -d -t -n 1 'lsof -n -i :8080'
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.