Cách sử dụng netstat để hiển thị quá trình đang nghe trên cổng


25

Tôi đang sử dụng máy tính xách tay OS X Mountain Lion và có một vài hộp Vagrant trên đó. Tôi đang cố gắng tìm ra quá trình nào đang lắng nghe trên cổng 8080. Các biến thể của tôi tạo ra hàng trăm dòng nhưng không có dòng nào với số cổng cụ thể. Tôi đang giả sử một cái gì đó như:

netstat -XXX | grep 8080

Đây là trong một thiết lập nhà hoặc môi trường chuyên nghiệp?
Lucas Kauffman

tốt, tái tạo một máy chủ enviro tại địa phương. nếu bạn muốn chuyển đến trang khác, thì tốt thôi. Các phiên bản khác nhau của netstat hỗ trợ các đối số khác nhau.
timpone

Được rồi thưa ngài, mọi thứ dường như theo thứ tự ở đây, xin vui lòng tiếp tục và có một ngày tốt đẹp.
Lucas Kauffman

Câu trả lời:


50

Thật không may trên OSX bạn bị mắc kẹt với BSD netstat sẽ không hiển thị cho bạn ID tiến trình được gắn vào một cổng nhất định. Những gì bạn phải làm thay vì sử dụng lsof. Cú pháp bạn sẽ cần sử dụng là:

lsof -i :8080

Điều này sẽ in ra những thông tin, hầu hết bạn không quan tâm, nhưng các trường được dán nhãn tốt. Ví dụ, kiểm tra đầu ra ví dụ này.

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

Điều này cho tôi biết rằng cổng 53537 đang được sử dụng bởi tiến trình ID 927. Khi đọc trường LỆNH hãy nhớ rằng đầu ra này bị cắt ngắn, trong thực tế, tên đầy đủ của nhị phân là GoogleTalkPlugin.


Thx, điều này khiến tôi gần gũi hơn rất nhiều, nó sẽ đi đến một thứ khá chung chung VBoxHeadl - có cách nào để xem cá thể VirtualBox nào (có hai cái ngay bây giờ) hay tôi đang hỏi quá nhiều (có thể là cái sau) cám ơn
timpone

@timpone: Tôi không biết đủ về VirtualBox để giúp bạn theo con đường đó. Bạn có thể kiểm tra dòng lệnh process để xem nó có được liệt kê ở đó không, hoặc sử dụng lsof -p PID và duyệt danh sách các tập tin đang mở cho đến khi bạn tìm thấy nó.
Scott Pack

tuyệt, thx giúp đỡ
timpone

7

Đây là những gì tôi muốn sử dụng khi tìm kiếm PID của cổng nghe. Đối với Linux sử dụng: netstat -tunlp

  • mạng n
  • l cổng nghe
  • quá trình p
  • tcp
  • bạn udp

Thông tin bổ sung có thể được tìm thấy trong các trang người đàn ông.


-p không liệt kê các đối số cho chương trình. Làm thế nào để tôi thấy điều này?
jameshfisher

4
OP hỏi về OSX. -p không phải là một tùy chọn trên phiên bản OSX của netstat.
Ted Bigham

-p trên OSX là port. Tôi ghét các nhà phát triển quyết định đưa ra các lập luận khác nhau cho OSX và Linux ...
DanFromGermany

5

Tôi đang trong quá trình sửa đổi netstat trên OS X để cung cấp tính năng này và tình cờ thấy thực tế là -v sẽ cung cấp cho bạn pid liên kết với một ổ cắm.


Các -v tăng mức độ chi tiết và nó được ghi lại. developer.apple.com/l Library / mac / documentation / Darwin / Reference / Lỗi
Leathe

1
xin lỗi, tôi có nghĩa là thực tế là nó in ra PID không được ghi lại, không phải là tùy chọn tồn tại.
Sean Hamilton

4

Đối với tôi, hai dòng sau hoạt động tốt nhất để hiển thị ứng dụng nào có cổng nghe mở và đường hầm:

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

1

Để tìm ra cổng cụ thể sử dụng bên dưới lệnh netstat

  netstat -an | grep ':8080'

3
OP hỏi về việc nhận quy trình. Điều này không hiển thị quá trình id.
Ted Bigham

1

Từ người đàn ông netstat

-p, - chương trình        Hiển thị PID và tên của chương trình mà mỗi ổ cắm thuộc về.

Tôi thường chỉ làm điều này: netstat -antup | grep 8080


hmm ... điều này nghe giống như những gì tôi thích nhưng điều này mang lại cho tôi các tùy chọn khác nhau trên OS X cho -p -p protocol Show statistics about protocol, which is either a well-known name
timpone

@timpone: -p để hiển thị PID là lệnh GNU netstat trong khi OSX sử dụng BSD netstat.
Scott Pack

-p không liệt kê các đối số cho chương trình. Làm thế nào để tôi thấy điều này?
jameshfisher

1
OP hỏi về OSX. -p không phải là một tùy chọn trên phiên bản OSX của netstat.
Ted Bigham

-p trên OSX là port. Tôi ghét các nhà phát triển quyết định đưa ra các lập luận khác nhau cho OSX và Linux ...
DanFromGermany

0

Lệnh dưới đây cho thấy kết nối:

netstat -antop | grep :8080

Để xem luồng hoàn chỉnh trong thời gian thực, bạn có thể sử dụng watch:

watch -d -t -n 1 'lsof -n -i :8080'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.