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
opóźnienie
źródło
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.

Scott Pack
źródło
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.

CDSU
źródło
-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.
5

Byłem w trakcie modyfikacji netstatOS X, aby zapewnić tę funkcję, i natknąłem się na fakt, że -vda ci pid związany z gniazdem.

Sean Hamilton
źródło
-vZwiększa poziom oznajmiania i jest udokumentowane. developer.apple.com/library/mac/documentation/Darwin/Reference/…
Leathe
1
przepraszam, miałem na myśli fakt, że drukuje PID nie jest udokumentowany, nie że opcja istnieje.
Sean Hamilton
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
Tomachi
źródło
1

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

  netstat -an | grep ':8080'

źródło
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

Hermes Conrad
źródło
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'
suhas
źródło