ฉันจะบอกได้อย่างไรว่าแอปพลิเคชันใดกำลังใช้เครือข่ายอยู่


9

บางครั้งเมื่อใช้ Mac ฉันสังเกตว่าการเชื่อมต่ออินเทอร์เน็ตของฉันช้าลง การใช้การตรวจสอบกิจกรรมฉันสามารถเห็นได้ว่าเป็นเพราะมีบางสิ่งที่กำลังดาวน์โหลดข้อมูลในอัตราเต็มรูปแบบการเชื่อมต่อของฉันสามารถรองรับได้ --- แต่ฉันไม่รู้วิธีที่จะบอกสิ่งที่รับผิดชอบ อาจเกิดจากหลายสิ่ง (การซิงค์ Dropbox แอปบางตัวทำการอัปเดตอัตโนมัติเมื่อเร็ว ๆ นี้มันเป็นบัฟเฟอร์วิดีโอในแท็บเบราว์เซอร์ที่ฉันลืมไป) ดังนั้นมันจึงมีประโยชน์จริง ๆ ที่จะบอกวิธี แอปใดรับผิดชอบการใช้เครือข่าย เป็นไปได้ไหมใน OS X เป็นการดีที่ฉันกำลังมองหาวิธีแก้ปัญหาฟรี (บรรทัดคำสั่งก็โอเค) ฉันใช้ Snow Leopard ถ้ามันสร้างความแตกต่าง

คำตอบ:


6

คุณสามารถลองdtraceใช้สายการบินเดียว:

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

ปล่อยให้มันรันไปซักพักแล้วกด Control-C มันจะพิมพ์ข้อมูลสรุปจำนวนไบต์ที่อ่านจากซ็อกเก็ตซึ่งกระจายระหว่างกระบวนการ สำหรับมุมมองที่ละเอียดมากขึ้นแทนที่โดยsum quantizeหรือเพียงเพื่อดูการนับของซ็อกเก็อ่านแทนที่โดยsumcount

ข้อจำกัดความรับผิดชอบ: ฉันได้ลองสิ่งนี้กับ Lion แล้ว แต่ AFAIK ไม่มีการเปลี่ยนแปลงอย่างมากในความสามารถของ dtrace ที่เกิดขึ้นระหว่าง SL และ Lion


1
ขอบคุณมาก! เรียบง่ายและมีประสิทธิภาพและทำสิ่งที่ฉันต้องการ ใช้งานได้ดีกับ Snow Leopard
นาธาเนียล

... ถึงแม้ว่าจริง ๆ แล้วการใช้ "ผลรวม" ตัวเลขดูแปลก ๆ โดยปกติแล้ว Google Chrome จะได้รับจำนวนลบ (!) แต่การใช้ปริมาณพวกมันดูสมเหตุสมผล
นาธาเนียล

ตัวเลขติดลบเหรอ? อาจเป็นกรณีของการล้น หรือถ้าคุณได้รับตัวเลขติดลบโปรดจำไว้ว่าการเรียกของระบบจะส่งคืน -1 หากเกิดข้อผิดพลาด ถ้ามันล้นฉันเดาว่ามันจะไม่เกิดขึ้นเมื่อคุณรันเคอร์เนล 64 บิต
Harald Hanche-Olsen

พวกมันเป็นตัวเลขติดลบขนาดกลาง นี่คือผลลัพธ์ทั่วไป (ขณะที่โหลดหน้านี้ซ้ำใน Chrome): 250 Google Chrome -159; 39 KernelEventAgen 1; 19 mDNSR ตอบกลับ 2240; แต่ฉันอาจตีความตีความผิด - เมื่อฉันใช้ 'quanitze' จะมีคอลัมน์ "ค่า" ซึ่งสามารถมีค่าลบและคอลัมน์ "นับ" ดูเหมือนว่าคำสั่ง sum จะรายงานผลรวมของ (ค่า) * (นับ) บางทีค่าลบอาจหมายถึงแพ็กเก็ตที่เข้ามาหรือบางอย่าง?
นาธาเนียล

ไม่นี่คือข้อมูลทั้งหมดที่เกี่ยวกับข้อมูลขาเข้า ... ฉันเดาว่าโครเมี่ยมทำการสำรวจบ่อยครั้งโดยการเรียก recvfrom ด้วยการหมดเวลาอันสั้นในชุดซ็อกเก็ตซึ่งในกรณีนี้ค่าส่งคืน -1 จะส่งผลหากไม่มีข้อมูล ดูหน้าคู่มือสำหรับ recvfrom
Harald Hanche-Olsen

6

ไฟร์วอลล์

คุณสามารถใช้เล็ก ๆ น้อย ๆ SnitchหรือHandsOff พวกเขาเป็นไฟร์วอลล์ที่ดีและทั้งคู่มีคุณสมบัติ "การตรวจสอบเครือข่าย" ที่จะทำงาน:

Little Snitchมีการตรวจสอบเครือข่ายโดยแสดงข้อมูลโดยละเอียดเกี่ยวกับการรับส่งข้อมูลเครือข่ายขาเข้าและขาออกทั้งหมด
ไอคอนสถานะในแถบเมนูแสดงข้อมูลสรุปของกิจกรรมเครือข่ายปัจจุบันและหน้าต่างมอนิเตอร์ที่มีข้อมูลที่ครอบคลุมมากขึ้นจะปรากฏขึ้นโดยอัตโนมัติในกรณีที่เกิดเหตุการณ์การจราจรใหม่

Hands Offเป็นแอพพลิเคชั่นสำหรับตรวจสอบและควบคุมการเข้าถึงแอพพลิเคชั่นไปยังเครือข่ายและดิสก์ของคุณ ความสามารถในการติดตามกิจกรรมที่ไม่สามารถสังเกตเห็นได้ตามปกติช่วยให้คุณสามารถตัดสินใจอย่างชาญฉลาดเกี่ยวกับการถ่ายโอนข้อมูลส่วนตัวของคุณดังนั้นหลีกเลี่ยงการรั่วไหลของข้อมูลที่เป็นความลับ

ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่

การตรวจสอบเครือข่ายของ: Snitch น้อย (ซ้าย), HandsOff (ขวา)

Nettop

ฟรีและในตัวในการแก้ปัญหา CLI ( แต่น่าเสียดายที่ไม่รวมอยู่ใน Snow Leopard) จะNettop nettop จัดกลุ่มทราฟฟิกตามโปรแกรมและพอร์ตและวัดสถิติเครือข่ายต่างๆ

อื่น ๆ

มีโปรแกรมอื่น ๆ อีกสองสามโปรแกรมที่จับและวัดปริมาณการใช้งาน ( iftop , wireshark , tcpdump ) แต่พวกเขาไม่รู้จัก pid ดั้งเดิม ที่จะทำให้การเชื่อมต่อที่คุณควรใช้netstat


ขอบคุณ! ฉันได้แก้ไขคำถามเพื่อระบุว่าฉันกำลังมองหาวิธีแก้ปัญหาฟรี (€ 30 มากเกินไปสำหรับบางสิ่งที่ฉันใช้เพียงบางครั้งเท่านั้น) แต่ถ้าไม่มีวิธีที่จะทำอย่างอิสระ จะยอมรับคำตอบนี้
นาธาเนียล

ขอโทษฉันไม่ดี ฉันจะพยายามหาทางเลือกฟรีและจะอัปเดตคำตอบของฉัน
mspasov

ฮา! nettopเป็นเรื่องใหม่สำหรับฉัน ดูมีประโยชน์
Harald Hanche-Olsen

ฉันยอมรับคำตอบนี้ด้วยหากเป็นไปได้ ถ้าฉันอัพเกรดเป็น Lion ดูเหมือนว่า nettop จะมีประโยชน์จริงๆ
นาธาเนียล

4
sudo fs_usage -f network

จะให้สิทธิ์การเข้าถึงเครือข่ายทั้งหมดแก่คุณโดยแอปพลิเคชันทั้งหมด (และกระบวนการ) โดยปกติแล้วกระบวนการที่สร้างทราฟฟิกจำนวนมากนั้นเป็นสิ่งที่ปรากฏบ่อยที่สุดในผลลัพธ์


1
ขอบคุณนี่มีประโยชน์จริงๆ ฉันประทับใจกับจำนวนคำตอบที่เป็นประโยชน์สำหรับคำถามนี้
นาธาเนียล

1

"หนังสือ DTrace" มีสคริปต์soconnect.dซึ่งทำเช่นนี้

คัดลอก "Mac OS X" sudo dtrace -s soconnect.dรุ่นที่วางไว้ในแฟ้มข้อความแล้วเรียกใช้จากสถานีด้วย


แต่นั่นไม่ได้ให้ความคิดเกี่ยวกับปริมาณการรับส่งข้อมูลเครือข่ายที่กระบวนการได้รับใช่หรือไม่ มันติดตามการเชื่อมต่อเท่าที่ฉันสามารถบอกได้
Harald Hanche-Olsen

1

การตรวจสอบกิจกรรมมีคอลัมน์สำหรับรับและส่งจำนวนไบต์ตั้งแต่ 10.9:

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.