Bagaimana saya harus menentukan pemanfaatan jaringan saat ini?
9
Saya ingin menampilkan pemanfaatan jaringan saat ini (penggunaan bandwidth) dari satu antarmuka kotak Debian di situs web. Itu tidak seharusnya sangat rumit atau tepat, hanya angka sederhana seperti "52 Mbit / s".
Monitor bandwidth jaringan yang umum seperti iftopmemberi saya cara untuk mengekstraksi nilai semacam itu.
Bagaimana cara terbaik mengambilnya?
Misalnya, saya kira saya mungkin menguraikan /proc/net/devsetiap beberapa menit. Tidak yakin apakah ini benar-benar cara terbaik untuk melakukan ini.
Cara terbaik untuk melakukannya adalah dengan menguraikan /proc/net/dev(diperingatkan bahwa /procini tidak portabel). Berikut ini bashskrip yang saya buat dengan cepat yang seharusnya dapat menghitungnya:
Ingatlah bahwa sleeptidak mempertimbangkan jumlah waktu yang diperlukan untuk melakukan operasi di loop sementara, jadi ini (sangat sedikit) tidak akurat. Pada tambang tembaga 600mhz saya, loop membutuhkan waktu 0,011 detik - ketidaktepatan yang dapat diabaikan untuk sebagian besar tujuan. Ingat juga ketika menggunakan output (dikomentari) kilobyte / megabit, bash hanya memahami aritmatika integer.
Saya pikir ini harus menjadi jawaban yang dipilih. Setiap solusi lain menyampaikan, di belakang layar, tentang penguraian /proc/net/dev, tanpa benar-benar memahami apa dan bagaimana keajaiban ini terjadi.
Eran
Solusi ini bekerja untuk saya di router / busybox.
cloneman
Gunakan date +%s.%Nuntuk mendapatkan cap waktu unix untuk setiap iterasi dan bagi perbedaan byte dengan perbedaan cap waktu. Maka Anda menghindari masalah iterasi loop lebih dari 1s.
Arnavion
3
Ada monitor lalu lintas jaringan seperti vnstat
yang menyimpan catatan lalu lintas bulanan Anda, atau slurm yang mengambil nilainya langsung dari yang disimpan di kernel. Ini tersedia di sebagian besar repo distro.
Inilah yang saya lihat ketika saya berlari slurm -i ra0:
Bisakah Anda menjelaskan ini sedikit? Apa yang seharusnya menjadi parameter? Apa pentingnya 125? Tolong jangan menanggapi dalam komentar; edit jawaban Anda untuk membuatnya lebih jelas dan lebih lengkap.
/proc/net/dev
, tanpa benar-benar memahami apa dan bagaimana keajaiban ini terjadi.date +%s.%N
untuk mendapatkan cap waktu unix untuk setiap iterasi dan bagi perbedaan byte dengan perbedaan cap waktu. Maka Anda menghindari masalah iterasi loop lebih dari 1s.Ada monitor lalu lintas jaringan seperti vnstat yang menyimpan catatan lalu lintas bulanan Anda, atau slurm yang mengambil nilainya langsung dari yang disimpan di kernel. Ini tersedia di sebagian besar repo distro.
Inilah yang saya lihat ketika saya berlari
slurm -i ra0
:sumber
Berikut ini adalah skrip shell yang sangat sederhana untuk menghitung ini:
mulai saja skrip yang melewati nama antarmuka, mis.
./shtraf eth1
sumber
125
? Tolong jangan menanggapi dalam komentar; edit jawaban Anda untuk membuatnya lebih jelas dan lebih lengkap.