我知道 gnome-system-monitor 可以显示带宽,即使由非 root 用户打开也是如此。但是 iftop、nethogs 等工具似乎都需要 root 才能工作。我如何允许普通用户执行 gnome-system-monitor 所做的操作?我要使用的应用程序是一个脚本,它每 n 秒输出一次 Mb/s 的上升/下降,用于传输到状态行。
答案1
您想要的数据可供所有人使用,时间为/proc/net/dev
。但是,您必须自己计算带宽,方法是取两个值之间的增量和时间。
但请记住,这些计数器可能会溢出,具体取决于您的系统架构和内核版本。溢出可能发生在 2 32 -1(可到达只需几秒钟在千兆以太网上)或 2 64 -1(几乎无关)。
答案2
Dir/sys/class/net/${interface}/statistics/
有你需要的一切。
基于此的 BASH 脚本:检查带宽
答案3
假设你正在谈论 nethogs。如果我们这样做,我们知道 nethogs 归 root 所有ls -l $(which nethogs)
。
现在我们需要做的就是更改 SUID 位,这样当运行 nethogs 时,它将以其所有者(即 root)的权限运行。运行:
sudo chmod u+s $(which nethogs)
而且它应该可以工作。