এটি সহজভাবে করার সর্বোত্তম উপায়টি সম্ভবত পার্স করা /proc/net/dev
(সতর্কতা অবলম্বন করুন যা /proc
পোর্টেবল নয়)। এখানে একটি bash
স্ক্রিপ্ট আমি দ্রুত একসাথে রেখেছি যা এটি গণনা করতে সক্ষম হবে:
#!/bin/bash
_die() {
printf '%s\n' "$@"
exit 1
}
_interface=$1
[[ ${_interface} ]] || _die 'Usage: ifspeed [interface]'
grep -q "^ *${_interface}:" /proc/net/dev || _die "Interface ${_interface} not found in /proc/net/dev"
_interface_bytes_in_old=$(awk "/^ *${_interface}:/"' { if ($1 ~ /.*:[0-9][0-9]*/) { sub(/^.*:/, "") ; print $1 } else { print $2 } }' /proc/net/dev)
_interface_bytes_out_old=$(awk "/^ *${_interface}:/"' { if ($1 ~ /.*:[0-9][0-9]*/) { print $9 } else { print $10 } }' /proc/net/dev)
while sleep 1; do
_interface_bytes_in_new=$(awk "/^ *${_interface}:/"' { if ($1 ~ /.*:[0-9][0-9]*/) { sub(/^.*:/, "") ; print $1 } else { print $2 } }' /proc/net/dev)
_interface_bytes_out_new=$(awk "/^ *${_interface}:/"' { if ($1 ~ /.*:[0-9][0-9]*/) { print $9 } else { print $10 } }' /proc/net/dev)
printf '%s: %s\n' 'Bytes in/sec' "$(( _interface_bytes_in_new - _interface_bytes_in_old ))" \
'Bytes out/sec' "$(( _interface_bytes_out_new - _interface_bytes_out_old ))"
# printf '%s: %s\n' 'Kilobytes in/sec' "$(( ( _interface_bytes_in_new - _interface_bytes_in_old ) / 1024 ))" \
# 'Kilobytes out/sec' "$(( ( _interface_bytes_out_new - _interface_bytes_out_old ) / 1024 ))"
# printf '%s: %s\n' 'Megabits in/sec' "$(( ( _interface_bytes_in_new - _interface_bytes_in_old ) / 131072 ))" \
# 'Megabits out/sec' "$(( ( _interface_bytes_out_new - _interface_bytes_out_old ) / 131072 ))"
_interface_bytes_in_old=${_interface_bytes_in_new}
_interface_bytes_out_old=${_interface_bytes_out_new}
done
মনে রাখবেন যে sleep
সময় লুপের সময় অপারেশনগুলি করতে যে পরিমাণ সময় লাগে তা বিবেচনা করে না, সুতরাং এটি (খুব সামান্য) ভুল। আমার 600mhz কপারমাইনে, লুপটি 0.011 সেকেন্ড নেয় - বেশিরভাগ কাজের জন্য একটি নগন্য অযোগ্যতা। (মন্তব্য করা) কিলোবাইট / মেগাবাইট আউটপুট ব্যবহার করার সময়ও মনে রাখবেন, ব্যাশ কেবল পূর্ণসংখ্যার গাণিতিক বোঝে।
/proc/net/dev
এই যাদু কী ঘটে এবং কীভাবে হয় তা না বুঝে পর্দার আড়ালে, পার্সিংয়ের সময়, প্রতিটি অন্যান্য সমাধান রিলে করে ।