ip -s link 显示链路层统计(如RX/TX packets、errors、dropped),不显示IP地址或网卡型号;IP地址需用ip addr,网卡型号需用lspci或ethtool -i。

直接说结论:用 ip -s link 能看到每个网络接口的实时收发包数量、错误计数、丢包数等链路层统计,但它不显示 IP 地址、网卡型号或硬件信息——这些得换命令查。
ip -s link 输出里哪些字段真正有用
执行 ip -s -h link show dev eth0(加 -h 更易读)后,重点盯住这两块:
-
RX下的packets和errors:反映入向是否稳定。如果errors非零且持续增长,可能是网线松动、驱动异常或交换机端口故障 -
TX下的dropped:不是丢包,而是内核队列满导致主动丢弃;carrier非零说明物理链路反复断连(比如网线接触不良) -
bytes值单位已自动转为 KiB/MiB(靠-h),但注意它只统计到协议栈入口,不包括 TCP 重传或应用层吞吐
为什么 ip -s link 不显示 IP 地址或网卡型号
因为 link 操作对象是 OSI 第二层(数据链路层),它只管 MAC、MTU、UP/DOWN 状态和底层帧计数。IP 地址属于第三层,得用 ip addr;网卡型号是硬件信息,得查 lspci | grep -i ethernet 或 ethtool -i eth0。
常见误操作:
- 把
ip -s link当成ifconfig替代品,结果找不到inet字段 - 在无
-h的旧系统(如 CentOS 6)上直接跑ip -s link,看到一堆字节计数却无法快速判断流量大小
对比 ip link 和 ip -s link 的实际差异
不加 -s 时,ip link show 只输出基础状态:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
加了 -s 才会展开统计块:
RX: bytes packets errors dropped overrun mcast
13.7M 20.0k 0 0 0 0
TX: bytes packets errors dropped carrier collsns
1.59M 9.97k 0 0 0 0
关键点:
-
ip link本身不带统计,-s是必须显式加上的选项 - 统计值是自接口启用以来的累计值,重启网络服务或系统后会清零
- 如果只想看某个接口,务必加
dev DEVICE_NAME,否则会刷屏所有接口(包括lo)
排查网络异常时怎么用才不踩坑
单纯看数字没意义,要结合变化趋势和上下文:
- 先运行一次
ip -s -h link show dev eth0记下初始值,隔 10 秒再跑一次,对比packets是否增长——不增说明链路已中断或上层没发包 - 发现
RX errors上升,别急着重启网卡,先检查ethtool eth0中的Link detected和Speed是否正常 - 容器或虚拟机里看到
TX dropped高,大概率是宿主机网桥队列溢出,而不是容器内程序问题
最常被忽略的一点:ip -s link 统计的是内核网络栈入口/出口的数据帧,它看不见防火墙 DROP、iptables LOG 后丢弃的包,也看不到 TCP 层的重传——真要定位丢包,得配合 tcpdump 或 ss -i 看连接级指标。


















