Làm thế nào tôi có thể biết ứng dụng nào đang sử dụng mạng?


9

Thỉnh thoảng khi sử dụng máy Mac, tôi nhận thấy kết nối internet của mình bị chậm. Sử dụng Trình giám sát hoạt động Tôi có thể thấy rằng đó là vì có gì đó đang tải xuống dữ liệu ở tốc độ đầy đủ mà kết nối của tôi có thể hỗ trợ --- nhưng tôi không biết làm thế nào để nói những gì chịu trách nhiệm về nó. Nó có thể được gây ra bởi một số điều khác nhau (đồng bộ hóa Dropbox; một số ứng dụng thực hiện cập nhật tự động; gần đây nhất là bộ đệm video trong tab trình duyệt mà tôi đã quên) vì vậy sẽ rất hữu ích khi có cách để nói ứng dụng nào chịu trách nhiệm cho việc sử dụng mạng. Là một điều như vậy có thể trong OS X? Lý tưởng nhất là tôi đang tìm kiếm một giải pháp miễn phí. (Dòng lệnh là OK.) Tôi đang trên Snow Leopard nếu nó tạo ra sự khác biệt.

Câu trả lời:


6

Bạn có thể thử dtracemột lớp lót này:

sudo dtrace -n 'syscall::recvfrom:return { @[pid,execname] = sum(arg0); }'

Hãy để nó chạy một lúc, sau đó nhấn Control-C. Nó sẽ in một bản tóm tắt về số byte được đọc từ các socket, được phân phối giữa các tiến trình. Để xem chi tiết hơn, thay thế sumbằng quantize. Hoặc chỉ để xem số lượng ổ cắm đọc, thay thế sumbằng count.

Tuyên bố miễn trừ trách nhiệm: Tôi mới chỉ thử điều này trên Lion, nhưng AFAIK không có thay đổi lớn về khả năng dtrace đã xảy ra giữa SL và Lion.


1
Cảm ơn nhiều! Đơn giản và hiệu quả và làm chính xác những gì tôi cần. Hoạt động tốt trên Snow Leopard.
Nathaniel

... mặc dù trên thực tế, sử dụng "tổng" các số trông hơi kỳ lạ - Google Chrome thường nhận được một số âm (!). Nhưng sử dụng lượng tử hóa chúng trông hợp lý.
Nathaniel

Số âm, hả? Có lẽ đó là một trường hợp tràn. Hoặc nếu bạn nhận được các số âm nhỏ, hãy nhớ rằng hệ thống gọi return -1 nếu xảy ra lỗi. Nếu nó bị tràn, tôi đoán là nó sẽ không xảy ra khi bạn chạy kernel 64 bit.
Harald Hanche-Olsen

Chúng là những số âm cỡ trung bình. Đây là một đầu ra điển hình (được thực hiện trong khi tải lại trang này trong Chrome): 250 Google Chrome -159; 39 KernelEventAgen 1; 19 mDNSResponder 2240; nhưng tôi có thể hiểu sai chúng - khi tôi sử dụng 'quanitze', có một cột "giá trị" có thể có giá trị âm và cột "đếm". Có vẻ như lệnh sum báo cáo tổng của (giá trị) * (tính). Có lẽ giá trị âm có nghĩa là các gói đến, hoặc một cái gì đó?
Nathaniel

Không, đây là tất cả về dữ liệu đến. Tôi đoán rằng chrome thường bỏ phiếu bằng cách gọi recvfrom với thời gian chờ ngắn được đặt trong ổ cắm, trong trường hợp đó giá trị trả về -1 sẽ không có dữ liệu. Xem trang hướng dẫn cho recvfrom.
Harald Hanche-Olsen

6

Tường lửa

Bạn có thể sử dụng Little Snitch hoặc Hands Offer . Chúng là tường lửa tuyệt vời và cả hai đều có tính năng "Network Monitor", sẽ thực hiện công việc:

Little Snitch bao gồm Trình giám sát mạng, hiển thị thông tin chi tiết về tất cả lưu lượng truy cập mạng đến và đi.
Biểu tượng trạng thái trong thanh menu cung cấp tóm tắt về hoạt động mạng hiện tại và cửa sổ màn hình với thông tin toàn diện hơn sẽ tự động bật lên trong trường hợp có sự kiện giao thông mới.

Hands Off là một ứng dụng để theo dõi và kiểm soát việc truy cập các ứng dụng vào mạng và đĩa của bạn. Khả năng giám sát các hoạt động thường không được chú ý cho phép bạn đưa ra quyết định sáng suốt liên quan đến việc chuyển thông tin cá nhân của bạn, do đó tránh rò rỉ thông tin bí mật.

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

Các màn hình mạng của: Little Snitch (trái), HandsPack (phải)

Cây tầm ma

Một giải pháp cli miễn phí và tích hợp (không may là nó không có trong Snow Leopard) sẽ là nettop . nhóm nettop lưu lượng truy cập theo chương trình và cổng và đo lường số liệu thống kê mạng khác nhau.

Khác

Có một vài chương trình khác, thu thập và đo lưu lượng truy cập ( iftop , wireshark , tcpdump ), nhưng họ không biết pid có nguồn gốc. Để thực hiện kết nối, bạn nên sử dụng netstat .


Cảm ơn! Tôi đã chỉnh sửa câu hỏi để chỉ ra rằng tôi lý tưởng tìm kiếm một giải pháp miễn phí (€ 30 là quá nhiều cho một thứ tôi chỉ thỉnh thoảng sử dụng), nhưng nếu không có cách nào miễn phí để làm điều đó thì tôi sẽ sẽ chấp nhận câu trả lời này
Nathaniel

Xin lỗi, lỗi của tôi. Tôi sẽ cố gắng tìm một giải pháp thay thế miễn phí và sẽ cập nhật câu trả lời của tôi.
mspasov

Hà! nettoplà mới đối với tôi. Có vẻ tiện dụng.
Harald Hanche-Olsen

Tôi cũng sẽ chấp nhận câu trả lời này nếu có thể. Nếu tôi nâng cấp lên Lion, có vẻ như nettop sẽ thực sự tiện dụng.
Nathaniel

4
sudo fs_usage -f network

sẽ cung cấp cho bạn tất cả các truy cập mạng bởi tất cả các ứng dụng (và quy trình). Thông thường, quá trình tạo ra nhiều lưu lượng truy cập là quá trình xuất hiện thường xuyên nhất trong đầu ra.


1
Cảm ơn, điều này thực sự hữu ích. Tôi ấn tượng bởi số lượng câu trả lời hữu ích cho câu hỏi này.
Nathaniel

1

"Cuốn sách DTrace" có một kịch bản, soconnect.d , thực hiện điều này.

Sao chép phiên bản "Mac OS X", dán nó vào tệp văn bản, sau đó chạy nó từ thiết bị đầu cuối với sudo dtrace -s soconnect.d.


Nhưng điều đó không cung cấp cho bạn một khái niệm về lưu lượng mạng mà một quá trình nhận được phải không? Nó chỉ theo dõi các kết nối, theo như tôi có thể nói.
Harald Hanche-Olsen

1

Trình giám sát hoạt động cũng đã có các cột để nhận và gửi byte kể từ 10.9:

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.