ฉันต้องการให้เทอร์มินัลส่งออกความเร็วในการอัพโหลดและดาวน์โหลดปัจจุบันของการเชื่อมต่อเครือข่ายของฉัน ฉันไม่ต้องการตรวจสอบความเร็วแบบเรียลไทม์ ฉันแค่ต้องการค่า "คงที่" เพื่อให้สามารถเขียนลงในไฟล์
ฉันจะประสบความสำเร็จได้อย่างไร
ฉันต้องการให้เทอร์มินัลส่งออกความเร็วในการอัพโหลดและดาวน์โหลดปัจจุบันของการเชื่อมต่อเครือข่ายของฉัน ฉันไม่ต้องการตรวจสอบความเร็วแบบเรียลไทม์ ฉันแค่ต้องการค่า "คงที่" เพื่อให้สามารถเขียนลงในไฟล์
ฉันจะประสบความสำเร็จได้อย่างไร
คำตอบ:
วิธีที่ง่ายที่สุดดูเหมือนจะดู/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)
ผลลัพธ์คือตัวเลขสองตัว ได้รับไบต์ต่อวินาทีตามด้วยไบต์ที่ส่งต่อวินาที
นี่คือรูปแบบต่างๆในโซลูชันที่ยอดเยี่ยมของ 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
wlp1s0
wlan0
ฉันจะไม่แก้ไขคำตอบเพราะฉันรู้ว่าสิ่งนี้ขึ้นอยู่กับ distro