บน Linux ฉันจะทราบได้อย่างไรว่ากระบวนการใดกำลังส่งแพ็กเก็ตอีเทอร์เน็ต


18

ฉันใช้ gkrellm ซึ่งแสดงให้เห็นว่ากระบวนการบางอย่างในระบบ Debian Linux ของฉันกำลังเขียนประมาณ 500KB / s ถึง eth0 ฉันต้องการทราบว่าเป็นกระบวนการใด ฉันรู้เกี่ยวกับ netstat นิดหน่อย แต่มันแสดงให้เห็นว่ามีการเชื่อมต่อ TCP แบบเปิดกว้างถึงพันล้านและฉันไม่สามารถสร้างข้อมูลเกี่ยวกับทราฟฟิกได้

มีใครรู้บ้างว่าฉันจะได้รับรายการกระบวนการที่ใช้อินเทอร์เฟซ eth0 เพื่อให้ฉันสามารถติดตามผู้กระทำผิดได้หรือไม่?


ติดตาม : การกระจาย Debian Linux ประกอบด้วยnethogsแพคเกจที่แก้ไขปัญหานี้อย่างแน่นอน เครื่องมือที่เกี่ยวข้องที่ยังไม่เครื่องหมาย ได้แก่iftop, และnetstatlsof


iptrafเป็นสิ่งที่ดี
Luv33preet

สิ่งนี้ใช้ได้กับฉันสำหรับการแลกเปลี่ยน UDP อายุสั้นมาก: serverfault.com/a/683327/119360
Luc

คำตอบ:


16

ฉันชอบnethogs มันเป็นโปรแกรมคอนโซลที่ใช้ ncurses ขนาดเล็กที่แสดงสถานะการรับส่งข้อมูลเครือข่ายต่อกระบวนการในวิธีที่สะดวก


18

netstat -ptuจะให้รหัสกระบวนการที่เป็นเจ้าของแก่คุณ (พร้อมกับข้อมูล netstat มาตรฐาน) สำหรับการเชื่อมต่อ tcp และ udp ทั้งหมด (ผู้ใช้ปกติจะไม่สามารถระบุกระบวนการทั้งหมดได้)

หากมีบางสิ่งที่ส่งออกปริมาณการรับส่งข้อมูลคงที่คุณควรเห็นRecv-QหรือSend-Qคอลัมน์ 2 และ 3 ตามลำดับ

ตัวอย่าง:
Recv-Q
sudo watch -n .1 'netstat -tup | grep -E "^[t,u]cp[6]{0,1}" | sort -nr -k2'

Send-Q
sudo watch -n .1 'netstat -tup | grep -E "^[t,u]cp[6]{0,1}" | sort -nr -k3'

ps axfหากคุณสงสัยว่ากระบวนการที่จะถูกเรียกโดยกระบวนการอื่น


(ไม่ใช่ว่าจำเป็นต้องใช้
แฟล็

5

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

ไม่แน่ใจว่านี่คือสิ่งที่คุณกำลังมองหาหรือไม่


4

ติดตั้งiftop(แบบข้อความธรรมดา) หรือntop(กราฟิก)


1
iftopแสดงการใช้แบนด์วิดท์บนอินเตอร์เฟสเท่านั้น
quanta

มันแสดงให้เห็นมากกว่านั้น โดยค่าเริ่มต้นมันแบ่งลงโดยโฮสต์
David Schwartz

สามารถแสดงรายการกระบวนการทั้งหมดที่ใช้อินเทอร์เฟซได้หรือไม่ ถ้าเป็นเช่นนั้นคุณช่วยกรุณาแสดงคำสั่งและตัวเลือกให้เราได้ไหม?
quanta

1
ไม่ได้โดยตรง netstat -pnแต่เมื่อคุณหาพื้นที่ที่คุณสามารถหากระบวนการเช่นกับ
David Schwartz

3

ใช้tcpdumpเพื่อสูดดมแพ็คเก็ตบางส่วนในส่วนต่อประสานนี้:

# tcpdump -vv -s0 -i eth0 -c 100 -w /tmp/eth0.pcap

คัดลอกไปยังไคลเอนต์และเปิดด้วย Wireshark เพื่อดูว่าเกิดอะไรขึ้น


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