测量每个用户或每个进程的累积网络统计信息

zsi*_*son 6 linux bandwidth iptables

我已经搜索了几个小时——在 Linux 下,我想知道用户或进程通过所有 ip 协议发送和接收的累积字节数。我在搜索中发现的最好的是可以使用 iptables 为用户标记数据包,例如:

iptables -t mangle -A OUTPUT -p tcp -m owner --uid-owner test -j MARK --set-mark 1
Run Code Online (Sandbox Code Playgroud)

看来“tc”可以用它来塑造流量,但我只想要统计数据——我不想塑造流量。我想要这样的东西:“用户 U 从 Y 时间开始传输使用 XMB”。我不知道如何从这些标记的数据包中获取统计信息。另外,我看过 nethogs,但它们似乎在测量瞬时流量,我需要累积计数。有人有想法吗?

Adm*_*emo 0

也许最简单的事情就是查看标记规则的匹配数据包/字节数,具体取决于您想要保留这些数据的时间iptables -t mangle -L OUTPUT -v。您将在输出左侧看到两列指示这些指标。

如果您想要每日计数,您可以随时安排iptables -t mangle -Z OUTPUT在午夜清除计数。