Я знаю, что gnome-system-monitor может показывать мне пропускную способность даже при открытии пользователем без полномочий root. Но для работы таких инструментов, как iftop, nethogs и т.д., Кажется, требуется root. Как я могу позволить обычному пользователю делать то, что делает gnome-system-monitor? Приложение, для которого я работаю, представляет собой скрипт, который выводит Мб / с вверх / вниз каждые n секунд, используемый для передачи в строку состояния.
3 ответа
Данные, которые вы хотите, доступны для всех, в /proc/net/dev
. Однако вам придется самостоятельно рассчитывать пропускную способность, беря дельту и время между двумя значениями.
Имейте в виду, однако, что эти счетчики могут переполниться, в зависимости от архитектуры вашей системы и версии ядра. Переполнение может произойти при 2 32 -1 (достижимы в считанные секунды по Gigabit Ethernet) или 2 64 -1 (практически не имеет значения).
Dir /sys/class/net/${interface}/statistics/
имеет все, что вам нужно.
Сценарий BASH основан на этом: check_bandwidth.sh
Предположим, вы говорите о сурках. Мы знаем, что nethogs принадлежит root, если мы делаем ls -l $(which nethogs)
.
Все, что нам нужно сделать сейчас, это изменить бит SUID, чтобы при запуске nethogs он работал с разрешениями своего владельца (т.е. root). Бежать:
sudo chmod u+s $(which nethogs)
И это должно работать.