替代“ netstat -s”


23

netstat -s 打印出很多非常详细的协议统计信息,例如收到的TCP重置消息数或发送的ICMP“回显请求”消息数或由于缺少路由而丢弃的数据包数。

netstat如今,当在Linux 中不推荐使用时,还有其他选择吗?

ss -s与提供的统计信息相比,提供的统计信息是肤浅的netstat


tcpdump似乎满足了同样的需求
Thomas Dickey

4
netstat不推荐使用。使用ss
mikeserv '16

@ThomasDickey tcpdump允许捕获实时流量,但不以netstat -s显示方式存储统计信息。
马丁

1
指定平台可能会很有用。您可能需要检查sysctl输出或各个/proc/net/*节点的内容。
jcaron'2

Answers:


16

netstat确实被许多分布过时,但它真的太大了“网络工具”包(包括ifconfigroutearp)已经赞成“iproute2的”包被弃用。iproute2 与最新的Linux网络功能一起发展,而传统的实用程序却没有。

所需的iproute2等效项鲜为人知nstat,它提供了netstat -s计数器,尽管形式略有不同:

  • /proc使用来自的原始计数器名称,每个名称都有其类的前缀(“ Udp”,“ Tcp”,“ TcpExt”等)
  • netstat的详细描述(可能是本地化的)不可用
  • 默认情况下省略零值计数器
  • 在第一和第二列中使用名称和值一致的列式输出
  • 第三列显示了启动后台nstat(-d守护程序模式)时在可配置时间窗口内的平均值,如果未启动,则为0.0

    例如,nstat打印“ UdpInDatagrams NNN”而不是“ Udp:InDatagrams”,而不打印“ Udp:收到的NNN数据包”的详细netstat版本。

nstat还假设您想要增量,而不是绝对数量,所以最接近相当于netstat -s/sbin/nstat -asz其中的选项是-a使用绝对专柜,-s不要让历史文件,-z不要忽略零值计数器。

ss接管的“插槽”部分netstat,但不像您所发现的那样接管其全部功能。(ss其实是优于netstat在许多情况下,两个特定的有使用过滤器表达式使用的能力和可选能力tcp_diaginet_diag Linux内核模块(比via更加直接地访问内核套接字数据/proc)。)

如果您需要确认描述性名称的映射,请使用net-tools的权威性参考文献: http //sourcecodebrowser.com/net-tools/1.60/statistics_8c_source.html

Doug Vitale提供了一个有用的指南,用于查找较旧命令的iproute2等效项(它是未维护的,并且有些不完整,它忽略nstat了iproute2软件包中已包含的任何参考)至少从2004内核2.6.x 以来)。

净工具住在但是,你应该能够找到一个包为您分配(或自己编译)。


23

如今,NETSTAT被视为已弃用,而网络工具中包含的其他程序(如arp,ifconfig,iptunnel,nameif, netstat和route)也。

在新的iproute2套件中,主要通过使用新工具中的某些实用程序提供的功能对其进行了复制和改进。ip命令。

不推荐使用的命令及其替换示例:

arp => ip n(ip邻居)

ifconfig => ip a(ip addr),ip链接,ip -s(ip -stats)

iptunnel => ip隧道

iwconfig => iw

nameif => ip链接,ifrename

netstat => ss,ip路由(对于netstat -r),ip -s链接(对于netstat -i),ip maddr(对于netstat-g)

netstat命令读取各种/ proc文件以收集信息。但是,当要显示的连接很多时,此方法的作用就会减弱。这使其变慢。该ss命令直接从内核空间获取其信息。与ss命令 netstat非常相似,因此很容易替换。

提供的统计ss肤浅的,但它被认为是 更好的选择,以netstat

例子 :

获取所有连接: ss | less

ss -t 在监听模式下获取tcp连接(服务器程序)

ss -u 在监听模式下获取udp连接

ss -x 获取Unix承插管连接

ss -ta 获取所有TCP连接

ss -au 获取所有udp连接

ss -nt 没有主机名的所有tcp

ss -ltn 在没有主机解析的情况下监听tcp

ss -ltp 用PID和名称监听TCP

ss -s 打印统计

ss -tn -o 与域主机的TCP连接并显示keepalive计时器

ss -tl4 ip4连接


4
这没有回答问题,OP正确指出了ss -s 不提供所提供的数据netstat -s。这还包含错误信息:/proc 此操作的内核接口,而这正是ss获取大量数据的方式:strace -e trace=file,read /sbin/ss -s
ms.spuratic '16

1
OP表示并非完全是“ ss是肤浅的”,而是“ ss -s与netstat提供的那些相比是肤浅的”(意味着与相比netstat -s)。这的确是事实:例如,从ss -s中您对TCP重传一无所知。
kenichi

4

您可能要检查以下内容/proc/net/netstat

TcpExt: SyncookiesSent SyncookiesRecv SyncookiesFailed EmbryonicRsts PruneCalled RcvPruned OfoPruned OutOfWindowIcmps LockDroppedIcmps ArpFilter TW TWRecycled TWKilled PAWSPassive PAWSActive PAWSEstab DelayedACKs DelayedACKLocked DelayedACKLost ListenOverflows ListenDrops TCPPrequeued TCPDirectCopyFromBacklog TCPDirectCopyFromPrequeue TCPPrequeueDropped TCPHPHits TCPHPHitsToUser TCPPureAcks TCPHPAcks TCPRenoRecovery TCPSackRecovery TCPSACKReneging TCPFACKReorder TCPSACKReorder TCPRenoReorder TCPTSReorder TCPFullUndo TCPPartialUndo TCPDSACKUndo TCPLossUndo TCPLostRetransmit TCPRenoFailures TCPSackFailures TCPLossFailures TCPFastRetrans TCPForwardRetrans TCPSlowStartRetrans TCPTimeouts TCPLossProbes TCPLossProbeRecovery TCPRenoRecoveryFail TCPSackRecoveryFail TCPSchedulerFailed TCPRcvCollapsed TCPDSACKOldSent TCPDSACKOfoSent TCPDSACKRecv TCPDSACKOfoRecv TCPAbortOnData TCPAbortOnClose TCPAbortOnMemory TCPAbortOnTimeout TCPAbortOnLinger TCPAbortFailed TCPMemoryPressures TCPSACKDiscard TCPDSACKIgnoredOld TCPDSACKIgnoredNoUndo TCPSpuriousRTOs TCPMD5NotFound TCPMD5Unexpected TCPSackShifted TCPSackMerged TCPSackShiftFallback TCPBacklogDrop TCPMinTTLDrop TCPDeferAcceptDrop IPReversePathFilter TCPTimeWaitOverflow TCPReqQFullDoCookies TCPReqQFullDrop TCPRetransFail TCPRcvCoalesce TCPOFOQueue TCPOFODrop TCPOFOMerge TCPChallengeACK TCPSYNChallenge TCPFastOpenActive TCPFastOpenPassive TCPFastOpenPassiveFail TCPFastOpenListenOverflow TCPFastOpenCookieReqd TCPSpuriousRtxHostQueues BusyPollRxPackets
TcpExt: 0 0 3310 41566 0 0 0 8 0 0 6402271 0 0 0 0 55 4280514 134510 38423 0 611 15354484 20413302 794718685 0 14094957 6423168 25905597 17269587 4 23681 29 50 20 0 25 43 25 19211 1800 131 0 93 93 25430 4864 18099 1199566 2300620 1280201 0 279 0 0 38507 607 2359841 19 98943 1769 0 5993 0 0 0 3 65 1310588 380 0 0 0 0 613504 190 0 12056356 0 0 0 0 3 735740 43633 0 606 3933 193 0 24 0 0 0 14 0
IpExt: InNoRoutes InTruncatedPkts InMcastPkts OutMcastPkts InBcastPkts OutBcastPkts InOctets OutOctets InMcastOctets OutMcastOctets InBcastOctets OutBcastOctets InCsumErrors InNoECTPkts InECT1Pkts InECT0Pkts InCEPkts
IpExt: 0 0 50492 0 18482301 0 68850196397 26546692767 3029352 0 2305454225 0 0 457718114 36 19480 2472

不是最友好的格式,但是您会明白的。

不确定它是否确实包含您要查找的特定项目,但它们可能在中的其他位置可用/proc/net


5
这是一个用于格式化输出的(单行)脚本:awk '{for(i=1;i<=NF;i++)title[i] = $i; getline; print title[1]; for(i=2;i<=NF;i++)printf " %s: %s\n", title[i], $i }' /proc/net/netstat
meuh

1
/proc/net/snmp包含大多数数据,并/proc/net/netstat包含其余数据。可悲的是,您将需要阅读net-tools statistics.c源代码来确定所有名称映射,尽管大多数名称映射都很明显。
ms.spuratic
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.