จะรับความเร็วในการอัพโหลดและดาวน์โหลดในเทอร์มินอลได้อย่างไร?


10

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

ฉันจะประสบความสำเร็จได้อย่างไร

คำตอบ:


14

วิธีที่ง่ายที่สุดดูเหมือนจะดู/proc/net/devแปลก ๆ ฉันได้เขียนสิ่งต่อไปนี้เพื่อเปรียบเทียบไฟล์นั้นสองครั้ง (ด้วยความล่าช้าครั้งที่สอง) จากนั้นจึงลบค่าจำนวนไบต์ทั้งหมด ในกรณีนี้em1คืออะแดปเตอร์เครือข่ายดังนั้นเพียงแค่เปลี่ยนสิ่งที่คุณต้องการดู

awk '/em1/ {i++; rx[i]=$2; tx[i]=$10}; END{print rx[2]-rx[1] " " tx[2]-tx[1]}' \
 <(cat /proc/net/dev; sleep 1; cat /proc/net/dev)

ผลลัพธ์คือตัวเลขสองตัว ได้รับไบต์ต่อวินาทีตามด้วยไบต์ที่ส่งต่อวินาที


3
เราจะไปที่นั่น. ต้มให้เป็นคำสั่ง awk เดียว Bootiful
Oli

11

นี่คือรูปแบบต่างๆในโซลูชันที่ยอดเยี่ยมของ Oli:

awk '{if(l1){print $2-l1,$10-l2} else{l1=$2; l2=$10;}}' \
  <(grep wlan0 /proc/net/dev) <(sleep 1; grep wlan0 /proc/net/dev)

มันจะพิมพ์ผลลัพธ์เช่นเดียวกับแนวทางของ Oli:

$ awk '{if(l1){print $2-l1,$10-l2} else{l1=$2; l2=$10;}}' \
>   <(grep wlan0 /proc/net/dev) <(sleep 1; grep wlan0 /proc/net/dev)
401500 30286

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

$ awk '{if(l1){print ($2-l1)/1024"kB/s",($10-l2)/1024"kB/s"} else{l1=$2; l2=$10;}}' \
    <(grep wlan0 /proc/net/dev) <(sleep 1; grep wlan0 /proc/net/dev)
398.771kB/s 82.8066kB/s

หมายเหตุ: บน Ubuntu 18.04 ผมใช้แทนwlp1s0 wlan0ฉันจะไม่แก้ไขคำตอบเพราะฉันรู้ว่าสิ่งนี้ขึ้นอยู่กับ distro
Daniel Serodio
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.