วิธีรับ TX / RX ไบต์ที่ไม่มี ifconfig


61

เนื่องจากifconfigจะเห็นได้ชัดว่าถูกคัดค้านในลินุกซ์ที่สำคัญฉันคิดว่าฉันได้เรียนรู้อะไรเกี่ยวกับเครื่องมือที่ควรจะนำมาใช้แทนipifconfig

และที่นี่ฉันพบปัญหา: เมื่อทำงานด้วยตนเองifconfigแสดงจำนวนไบต์ที่รับ / ส่งในแต่ละอินเตอร์เฟสนอกเหนือจากข้อมูลอื่น ฉันไม่สามารถหาวิธีรับสิ่งนี้ipได้ ไม่มีฟังก์ชั่นดังกล่าวในเครื่องมือนี้หรือไม่? เครื่องมือในตัวอื่นใดที่ฉันสามารถใช้เพื่อรับสถิติเหล่านั้น


netstatนอกจากนี้คุณยังสามารถตรวจสอบ linux.die.net/man/8/netstat
SunSparc

คำตอบ:


53

อีกทางเลือกหนึ่งคือการใช้ระบบไฟล์ / proc ไฟล์/ proc / net / devมีสถิติเกี่ยวกับเน็ตเวิร์กอินเตอร์เฟสที่ตั้งค่าไว้ แต่ละบรรทัดใช้สำหรับเครือข่ายอินเทอร์เฟซเดียวและมีสถิติสำหรับการรับและส่ง สถิติรวมถึงตัวชี้วัดจำนวนไบต์ทั้งหมดที่ได้รับ / ส่งเช่นแพ็คเก็ตหยดความผิดพลาดและอื่น ๆ

cat /proc/net/dev

    Inter-|   Receive                                                |  Transmit
     face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed

    lo:    29846937   129576     0    0    0     0          0       0 29846937   129576     0    0    0     0       0          0
 wlan0:    9467393340 8027251    0    0    0     0          0       0 2559312961 5896509    0    0    0     0       0          0

หรือคุณสามารถลองคำสั่งnetstatซึ่งสามารถแสดงเน็ตเวิร์กอินเตอร์เฟสและสถิติที่เกี่ยวข้องทั้งหมด:

netstat -i

Iface   MTU Met    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
lo         65536   0   130435      0      0      0   130435      0      0      0 LRU
wlan0       1492   0  8028018      0      0      0  5897361      0      0      0 BMRU

/proc/net/devมีรูปแบบที่สะอาดที่สุดของโซลูชัน IMO ทั้งหมดที่ยอมรับได้
justinas

สถิติแสดงให้เห็นว่าcat /proc/net/devเป็นเวลานานเท่าไหร่?
lalebarde

คุณจะได้รับ tx / rx จาก/proc/net/devอย่างไร?
Piotr Kula

1
ลองแยกวิเคราะห์ฟิลด์ 3 และ 11 ของเอาต์พุตบางอย่างเช่น awk '/: / {print ($ 1, $ 3, $ 11)}' </ proc / net / dev
dsmsk80

54

ipคำสั่งซึ่งเป็นส่วนหนึ่งของแพคเกจ iproute2 เป็นเครื่องมือใหม่ คำlinkสั่งย่อยสำหรับการจัดการอุปกรณ์ / อินเตอร์เฟส

หากคุณสามารถรับสถิติของอินเทอร์เฟซที่ใช้ ip -s link

root:~# ip -s link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    RX: bytes  packets  errors  dropped overrun mcast
    50679705   529967   0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    50679705   529967   0       0       0       0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:1d:7d:aa:e3:4e brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast
    187663757  308710386 0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    4051284587 532435117 0       0       0       0

6
ในขณะที่procคำตอบคือสะอาดและมีน้ำหนักเบา, คำตอบนี้อาจจะเป็นที่ใกล้เคียงกับ "ทดแทน" สำหรับifconfigเครื่องมือเพราะมันได้รับการออกแบบอย่างชัดเจนกับการเปลี่ยนของifconfigในใจ
Moshe Katz

2
ip -s link show dev eth0เพื่อแสดงเฉพาะปริมาณการใช้งานบน eth0
pim

4
ในการรับสิ่งนี้ในรูปแบบที่มนุษย์สามารถอ่านได้ (การรายงานใน mb / gb / tb แทนที่จะเป็นไบต์) ให้ใช้-hแฟล็ก ip -h -s linkยกตัวอย่างเช่น
Joseph Redfern

46

คุณสามารถรับข้อมูลที่จำเป็นทั้งหมดผ่าน proc

# cat /sys/class/net/eth0/statistics/rx_bytes
# cat /sys/class/net/eth0/statistics/rx_packets

# cat /sys/class/net/eth0/statistics/tx_packets
# cat /sys/class/net/eth0/statistics/tx_bytes

นอกจากนี้คุณสามารถใช้ iptables และแยกวิเคราะห์ผลลัพธ์

สำหรับแพ็กเก็ตที่ได้รับ

# iptables -L INPUT -n -v

สำหรับแพ็กเก็ตที่ส่ง

# iptables -L OUTPUT -n -v 

หากเซิร์ฟเวอร์เป็นเกตเวย์คุณควรแยกวิเคราะห์FORWARD chain


2

คุณสามารถอ่านไฟล์/sys/class/net/wlp3s0/statistics/rx_bytesและรับ rx_byes โดยตรงโดยไม่ต้องเรียกคำสั่งอื่นvnstatก็ดีเช่นกัน Linux เก็บข้อมูลทั้งหมดในไฟล์ตามที่ฉันรู้ดังนั้นควรหาไฟล์เหล่านั้นและรับข้อมูล การค้นหาไฟล์ที่เกี่ยวข้องเป็นสิ่งที่ท้าทาย


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