我是本公司很多人使用的openSUSE linux服务器的pipe理员。
今天我们发现,昨天有一个用户使用了太多的带宽,对于pipe理部门来说很重要的是要注意哪个用户做了这个。
我在不同的网站和论坛等search,所有我觉得是ifconfig或ifstat只是显示整个networking的使用情况。 同时我还安装了一个工具vnstat来启动networking监视和日志logging,以便将来可能发生任何进一步的问题。
最后,我想知道是否有任何解决scheme来查找过去每个用户在特定时间的networking使用情况。 或者在linux中有一个日志文件负责用户的networking使用情况。
不,没有这样的日志文件。
你必须专门设置日志来做到这一点,我不知道有一个标准的方式来做到这一点。 要准确地做到这一点可能并不容易:用户可能会导致该用户不拥有的进程生成networkingstream量,并且将该stream量归于该用户可能并不重要。
看看这个近乎重复的问题或者这个 。
这很简单:使用iptables ,你也可以跟踪用户。 理论上,你可以阻止/删除/redirect他们的数据包,但现在你只想测量它们。 这很简单,因为iptables默认跟踪所有通过规则的数据。 示例代码在这里:
iptables -A OUTPUT -o eth0 -m owner --uid-owner 1001
在iptables -L -v -n您将能够看到用户使用uid 1001发送了多less数据。
当然,这不是一个完整的解决scheme – 如果你愿意的话,也许是更好的select
可能有现成的工具,但手动执行也不是那么复杂。
问题是您需要在networking连接和用户运行时build立链接。 一旦完成,这个链接就会丢失(至less,据我所知)。
保持这种信息的一种方法可以遵循这个问题中的解释:
如何在Ubuntu服务器上监控每个用户的networking带宽? 。 (askUbuntu)