Linux

替代“netstat -s”

  • September 25, 2021

netstat -s列印出許多非常詳細的協議統計資訊,例如收到的 TCP 重置消息數或發送的 ICMP“回應要求”消息數或由於失去路由而丟棄的數據包數。

當在 Linuxnetstat中被認為現在已棄用時,還有其他選擇嗎?

與提供的統計數據ss -s相比,由 提供的統計數據是膚淺的netstat

netstat確實已被許多發行版棄用,儘管實際上很多“net-tools”包(包括ifconfig和)已被棄用,取而代之的是“iproute2”包routeiproute2與最新的 Linux 網路功能一起發展,而傳統的實用程序卻沒有。arp

您想要的 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在許多情況下要好,兩個特定的能力是使用過濾器表達式的能力和使用 Linux 核心模組比 via 更直接地訪問核心套接字數據的可選tcp_diag能力inet_diag/proc

如果您需要確認描述性名稱的映射,net-tools 源是權威參考:http: //sourcecodebrowser.com/net-tools/1.60/statistics_8c_source.html

Doug Vitale 為查找舊命令的 iproute2 等效項提供了有用的指南(它未維護且略微不完整,它忽略了至少自 2004 年核心 2.6.x 時間以來nstat一直是 iproute2 包的一部分的任何引用)。

但是net-tools仍然存在,您應該能夠為您的發行版找到一個包(或自己編譯)。

NETSTAT 現在被認為已被棄用,其他程序包括在網路工具中,如 arp、ifconfig、iptunnel、nameif netstat、和 route。

其中幾個實用程序提供的功能已在新的iproute2套件中進行了複製和改進,主要是通過使用其新 ip命令。

不推薦使用的命令及其替換範例:

  • arpip n( ip neighbor)
  • ifconfigip a( ip addr), ip link, ip -s( ip -stats)
  • iptunnelip tunnel
  • iwconfigiw
  • nameifip link, 異名
  • netstatss, ip route(對於netstat -r), ip -s link(對於netstat -i), ip maddr(對於netstat -g)

netstat命令讀取各種 /proc 文件以收集資訊。然而,當有很多連接要顯示時,這種方法就會變得很弱。這使它變慢。該ss命令直接從核心空間獲取其資訊。與命令一起使用的選項與ssnetstat 非常相似,因此很容易替換。

提供的統計數據ss膚淺的,但它被認為 是更好的替代方案netstat

例子

ss | less  # get all connections
ss -t      # get tcp connections not in listen mode (server programs)
ss -u      # get udp connections not in listen mode
ss -x      # get unix socket pipe connections
ss -ta     # get all tcp connections
ss -au     # get all udp connections
ss -nt     # all tcp without host name
ss -ltn    # listening tcp without host resolution
ss -ltp    # listening tcp with PID and name
ss -s      # prints statstics
ss -tn -o  # tcp connection with domain host and show keepalive timer
ss -tl4    # ip4 connections 

請參閱 netstat 聯機幫助頁中的註釋:

NOTES
      This program is mostly obsolete.  Replacement for netstat is  ss.   Re‐
      placement for netstat -r is ip route.  Replacement for netstat -i is ip
      -s link.  Replacement for netstat -g is ip maddr.

引用自:https://unix.stackexchange.com/questions/258711