Я хочу отобразить текущее использование сети (использование полосы пропускания) одного интерфейса коробки Debian на веб-сайте. Он не должен быть очень сложным или точным, просто простое число, такое как «52 Мбит / с».
Типичные мониторы пропускной способности сети, такие как, не iftopдают мне возможности просто извлечь такое значение.
Как я могу лучше всего получить его?
Например, я думаю, я мог бы анализировать /proc/net/devкаждые несколько минут. Не уверен, что это действительно лучший способ сделать это.
Лучший способ сделать это просто - это, вероятно, проанализировать /proc/net/dev( имейте в виду, что /procэто не переносимо). Вот bashскрипт, который я быстро соединил, чтобы его можно было рассчитать:
Имейте в виду, что sleepне учитывается количество времени, необходимое для выполнения операций в цикле while, так что это (очень немного) неточно. На моем медном руднике с частотой 600 МГц цикл занимает 0,011 секунды - незначительная погрешность для большинства целей. Помните также, что при использовании (закомментированных) выходных данных в килобайтах / мегабитах bash понимает только целочисленную арифметику.
Я думаю, что это должен быть выбранный ответ. Любое другое решение закулисно опирается на анализ /proc/net/dev, фактически не понимая, что и как происходит это волшебство.
Эран
У меня это решение работало на роутере / busybox.
клонист
Используйте date +%s.%Nдля получения метки времени Unix для каждой итерации и делите разницу байтов на разницу меток времени. Тогда вы избежите проблемы длинных итераций цикла.
Арнавион
3
Существуют мониторы сетевого трафика, такие как vnstat,
которые хранят ежемесячные записи вашего трафика, или slurm, который получает его значения непосредственно от тех, которые хранятся в ядре. Он доступен в большинстве дистрибутивов.
Можете ли вы объяснить это немного? Что именно должен быть параметр? Какое значение имеет 125? Пожалуйста, не отвечайте в комментариях; отредактируйте свой ответ, чтобы сделать его более понятным и полным.
/proc/net/dev
, фактически не понимая, что и как происходит это волшебство.date +%s.%N
для получения метки времени Unix для каждой итерации и делите разницу байтов на разницу меток времени. Тогда вы избежите проблемы длинных итераций цикла.Существуют мониторы сетевого трафика, такие как vnstat, которые хранят ежемесячные записи вашего трафика, или slurm, который получает его значения непосредственно от тех, которые хранятся в ядре. Он доступен в большинстве дистрибутивов.
Вот что я вижу, когда бегу
slurm -i ra0
:источник
Вот очень простой скрипт для расчета этого:
просто запустите скрипт, передавая имя интерфейса, например.
./shtraf eth1
источник
125
? Пожалуйста, не отвечайте в комментариях; отредактируйте свой ответ, чтобы сделать его более понятным и полным.