gpt4 book ai didi

linux - 在 Linux 中,netstat -su 命令在哪里获取统计信息?

转载 作者:太空宇宙 更新时间:2023-11-04 04:36:53 25 4
gpt4 key购买 nike

在我的 Linux 服务器中,当我运行 netstat -su 时,我可以获得 udp 数据包的统计信息,如下所示:

netstat -su 
IcmpMsg:
InType0: 10827
InType3: 42792
InType8: 298795
InType13: 2
OutType0: 298795
OutType3: 328120
OutType8: 10827
OutType14: 2
Udp:
232862733 packets received
12074334 packets to unknown port received.
555474 packet receive errors
8650718 packets sent
UdpLite: IpExt:
InBcastPkts: 375
InOctets: 169855997552
OutOctets: 60497003017
InBcastOctets: 144080

netstat 命令从哪里获取这些统计信息?我可以清除缓冲区以使它们从零开始吗?

最佳答案

您无需离开终端即可找到此类问题的答案。

让我们亲自看看:

# strace netstat -su &> netstat_strace

这将是一个“打开”和“读取”,因为它从某个地方获取数据(但 grep 出无法读取/打开的位置):

# grep -E 'open|read' netstat_strace  | grep -v ENOENT
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\37\2\0\0\0\0\0"..., 832) = 832
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
open("/proc/meminfo", O_RDONLY|O_CLOEXEC) = 3
read(3, "MemTotal: 3854816 kB\nMemF"..., 1024) = 1024
open("/proc/net/snmp", O_RDONLY) = 3
read(3, "Ip: Forwarding DefaultTTL InRece"..., 4096) = 1261
open("/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 4
read(4, "# Locale name alias data base.\n#"..., 4096) = 2570
read(4, "", 4096) = 0
read(3, "", 4096) = 0
open("/proc/net/netstat", O_RDONLY) = 3
read(3, "TcpExt: SyncookiesSent Syncookie"..., 4096) = 2158
read(3, "", 4096) = 0

通过检查 strace 输出,我们可以看到它正在写入一个字符串:

write(1, "IcmpMsg:\n    InType0: 11\n    InT"..., 373IcmpMsg:
InType0: 11

嗯,这很有趣。让我们查看 netstat 的手册页:

man netstat

如果您查看FILES:

FILES

/etc/services -- The services translation file

/proc -- Mount point for the proc filesystem, which gives access to kernel status information via the following files.

/proc/net/dev -- device information

/proc/net/raw -- raw socket information

/proc/net/tcp -- TCP socket information

/proc/net/udp -- UDP socket information

/proc/net/igmp -- IGMP multicast information

...

您可以从上面看出为什么它打开读取。在搜索“清除”或“重置”(或阅读它)时,您会发现这些不是该命令的选项。

下一步将检查 man proc,它将自己描述为“进程信息伪文件系统”。

从这里,您可以得到这样的想法:如果您修改了 netstat 读取的文件,您可以更改 netstat 的输出(/proc/net/netstat 在我看来特别有趣)——而且可以——但我建议将其设置为只读。

关于linux - 在 Linux 中,netstat -su 命令在哪里获取统计信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33150564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com