首页/系统/Linux 运维命令速查/mtr 持续路径质量监测
网络命令82 条

mtr 持续路径质量监测

traceroute + ping 的合体:持续发包统计每跳丢包率与抖动,-r 出报表模式,定位「哪一跳开始丢」最直观。

Linux 运维命令速查系统更新于 2026-10-13

mtr 是什么

mtr 把 traceroute 与 ping 合到一起:持续向路径上的每一跳发包,统计各跳的丢包率与延迟分布,最后以表格形式呈现。相比一次性探测的 traceroute,它能看出「丢包是持续的偶发还是稳定存在」,因此判断「从哪一跳开始丢」这件事,mtr 的结论比单次探测可靠得多。脚本里要用报表模式并限制轮数。

基本信息

用途逐跳持续统计丢包率与延迟分布
语法mtr [选项] 目标;-r 报表模式,-c 轮数,-n 不反解,-w 宽格式
所属软件包mtr(部分发行版需要单独安装)
权限说明常规 ICMP 模式普通用户即可,TCP 模式与自定义间隔可能需要 root

典型使用场景

  • 链路质量定位:确认丢包从哪一跳开始出现,缩小范围后再找责任方
  • 跨网访问抖动:观察延迟的标准差,判断链路是否稳定
  • 云环境路由核对:确认流量路径与设计的一致性与稳定性
  • 工单举证:报表模式输出稳定可复现的证据,便于提交给运营商
  • 切换前后对比:变更路由或链路后,用同样的参数重跑一次做对比

常用示例

常用示例
mtr -rnc 20 8.8.8.8                 # 报表模式,20 轮,不反解
mtr -rwzc 50 10.1.1.5               # 宽格式并显示自治域信息
mtr -r -c 30 -i 1 -n target         # 每 1 秒一轮,共 30 轮
mtr --tcp --port 443 target         # TCP 探测(部分版本支持)
mtr -rw -c 20 target                # 宽格式,地址列不易被截断
mtr -r -c 20 target > /tmp/mtr-$(date +%F).txt   # 留档

报表列读法

列含义怎么看
Loss%该跳的丢包率从某跳开始持续偏高才是链路问题
Snt已发送探测包数与轮数对应,确认统计样本足够
Last / Avg最近与平均延迟Avg 适合作为该跳的基准值
Best / Wrst最好与最差延迟差距大说明该跳存在排队或抖动
StDev延迟标准差数值大表示不稳定,比平均值更能反映体验
Host该跳地址与名称加 -n 显示为纯 IP,加 -z 会带自治域
丢包的判读有两条经验:丢包从某一跳开始出现且后续各跳保持同水平,说明问题在该跳或它之前;只有个别中间跳丢包而后续跳正常,多半是该路由器对探测流量做了限速,不代表数据面有问题。
mtr 默认会持续运行,在脚本或工单场景里必须用 -c 限制轮数,否则命令不会返回,排查时间也会被浪费在等待上。

易错点

  • 不加 -c 直接运行:默认持续探测不会自动退出,自动化场景会卡住
  • 只看丢包率最高的一行:中间跳限速会造成虚高的丢包率,必须结合前后跳一起看
  • 样本轮数太少就下结论:几轮探测的统计噪声很大,工单举证建议二十轮以上
  • ICMP 与 TCP 探测不做区分:部分链路对协议有差异化策略,必要时用两种方式各跑一遍对照

数据来源与参考

  • man 8 mtr(mtr 官方手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌