linux中用ping测试网络延迟和丢包率,关键在于使用-c限定包数(如-c 50)、-q静默输出、-w调整超时、-i控制间隔,并通过对比域名与ip的ping结果分层排查dns或网络问题,结合rtt统计(min/avg/max/mdev)和丢包率综合判断链路质量。

Linux 中用 ping 测试网络延迟和丢包率,关键不是“发几个包”,而是选对参数、看懂输出、分层排查。默认不加参数的 ping 容易误导判断,必须配合常用参数才能得到可靠结果。
用 -c 限定次数,获取稳定统计
不加 -c 的 ping 会无限发送,既不方便观察,也不利于脚本调用。固定包数才能算出真实丢包率。
- ping -c 10 www.baidu.com:发 10 个包,结尾自动显示统计行,例如 10 packets transmitted, 10 received, 0% packet loss
- 少于 10 个包波动大,建议日常测试用 -c 50 或 -c 100,提高丢包率可信度
- 搭配 -q(静默模式)可只输出汇总,适合日志记录或监控脚本:ping -c 50 -q 8.8.8.8
看懂 time= 和 rtt 统计,区分瞬时延迟与整体质量
每行末尾的 time=xx.x ms 是单次往返时间(RTT),但真正反映链路质量的是结尾的统计行:
Python Linux版 为 Python.org 官方提供的 Python 3.14.6 Linux/Unix 源码包,适合在Linux/Unix环境中安装、运行 Python 代码并学习函数、模块和脚本开发。
- rtt min/avg/max/mdev = X/X/X/X ms:其中 avg 是平均延迟,mdev 是标准差——mdev 越大,说明抖动越严重(比如 avg=25ms 但 mdev=40ms,代表延迟忽高忽低)
- 单次出现 time=300ms 不一定异常;若连续多包 >200ms 或 max 远高于 avg,才需关注
- 丢包率直接看 X% packet loss,不是靠肉眼数“timeout”行——它可能被刷屏遗漏
绕过 DNS,直连 IP 判断问题层级
域名 ping 不通,不等于网络坏了。先分离 DNS 层和网络层:
- 用 dig +short www.example.com 或 nslookup www.example.com 获取 IP
- 再执行 ping -c 10 93.184.216.34(以实际 IP 替换)
- 对比结果:域名丢包但 IP 正常 → DNS 问题;两者都丢包 → 网络或目标服务问题
- 某些 CDN 返回多个 IP,建议加 @8.8.8.8 指定公共 DNS 再查一次,避免本地缓存干扰
调 -W 和 -i,适应不同网络场景
默认超时 5 秒、间隔 1 秒,在很多场景下会掩盖真实问题:
- -W 2:单次等待上限设为 2 秒,适合跨国链路或高延迟环境,避免假“超时”
- -i 0.5:半秒发一个包,比默认更敏感,能暴露短时拥塞或周期性丢包
- -W 1 -i 0.2 组合可用于快速探测内网设备是否在线(如交换机管理口)
- 注意:普通用户通常无法设置 -i 小于 0.2 秒,root 权限下才支持更高频率










