Я знаю, что gnome-system-monitor может показывать мне пропускную способность даже при открытии пользователем без полномочий root. Но для работы таких инструментов, как iftop, nethogs и т.д., Кажется, требуется root. Как я могу позволить обычному пользователю делать то, что делает gnome-system-monitor? Приложение, для которого я работаю, представляет собой скрипт, который выводит Мб / с вверх / вниз каждые n секунд, используемый для передачи в строку состояния.

3 ответа3

4

Данные, которые вы хотите, доступны для всех, в /proc/net/dev . Однако вам придется самостоятельно рассчитывать пропускную способность, беря дельту и время между двумя значениями.

Имейте в виду, однако, что эти счетчики могут переполниться, в зависимости от архитектуры вашей системы и версии ядра. Переполнение может произойти при 2 32 -1 (достижимы в считанные секунды по Gigabit Ethernet) или 2 64 -1 (практически не имеет значения).

1

Dir /sys/class/net/${interface}/statistics/ имеет все, что вам нужно.

Сценарий BASH основан на этом: check_bandwidth.sh

0

Предположим, вы говорите о сурках. Мы знаем, что nethogs принадлежит root, если мы делаем ls -l $(which nethogs) .

Все, что нам нужно сделать сейчас, это изменить бит SUID, чтобы при запуске nethogs он работал с разрешениями своего владельца (т.е. root). Бежать:

sudo chmod u+s $(which nethogs)

И это должно работать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .