重置 Netstat 统计数据

重置 Netstat 统计数据

有没有办法无需重新启动设备即可清除“netstat -s”的统计信息?

我正在尝试确定一段不确定的时间内的错误数量。

答案1

netstat工具从内核提供的各种来源收集统计数据:

/proc/net/snmp
/proc/net/netstat
/proc/net/sctp/snmp # if used

可能还有其他。由于这些内核数据没有重置,并且netstatLinux 上的命令不保留状态文件,因此无法要求重置其统计信息。

幸运的是,替换工具来自iproute2而不是弃用net-tools,称为nstat,虽然使用大致相同的数据源,但会保留一个状态文件(似乎是/tmp/.nstat.u$UID),默认情况下将仅输出自上次使用以来的非零增量。它的语法不一样,所以你必须适应。如果担心破坏与其他 *nix 的兼容性,它已经完成了:除了单个命令参数之外的命令参数-s通常具有其他含义,并且 FreeBSD 和 Linux 之间的统计输出完全不同。

有选项可以显示零增量(-z/ --zero)、忽略(-a/ --ignore)或不记住(-s/ --noupdate)上次运行,以表现得像netstat -s。有一个守护进程模式(例如-d 10),以避免竞争和计算平均值。

要显示错误计数器的增量,这些计数器似乎都以Errors或结尾Errs,可以是:

$ nstat -rn; sleep 50; nstat '*Errors' '*Errs'
#kernel
IpInHdrErrors                   3                  0.0
IcmpInErrors                    4                  0.0
IcmpInCsumErrors                4                  0.0
IpExtInCsumErrors               3                  0.0

tc qdisc add dev eth0 handle 1: root netem corrupt 10由于这些错误是使用和发送的网络命名空间人为创建的ping。要获得平均统计数据(最后一列),首先应在守护进程模式下运行一个实例,以便它可以继续收集统计数据。例如:

nstat -d 5 -t 60

当然,人们也可以实现自己的包装器来netstat重新实现这一点:将最后的输出保存在某处,并且仅智能地显示上次运行的增量。

注意:配套命令rtacct是关于领域路线统计通常用于高级路由(统计)。

相关内容