网络命令82 条

ping 连通性检测

最基本的连通性工具:ICMP 探测往返时延与丢包;-c 次数、-i 间隔、-W 超时、-I 指定接口/源地址。

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

ping 是什么

ping 发送 ICMP 回显请求并等待应答,用往返时间(RTT)与丢包率判断链路是否通、质量如何。它测的是三层可达性,因此 ping 通只说明 IP 层能到达,不代表服务端口可用;反过来 ping 不通也可能是对端做了 ICMP 限速或直接禁 ping,而服务本身完全正常。做连通性判断时,ping 与按端口的探测(nc、curl、telnet)要配合使用。

基本信息

适用平台Linux、macOS、Windows 均有 ping;Linux 上是 iputils 版本,Windows 的选项与输出格式完全不同
命令语法ping [选项] 目标
常用选项-c 发送次数、-i 发送间隔、-W 单次等待应答的超时(秒)、-w 整个命令的总超时、-I 指定出口接口或源地址、-s 报文大小、-q 只输出摘要、-n 不做反向解析、-t 设置存活时间
权限说明Linux 上普通用户可用(现代 iputils 使用 ICMP socket),更严格的系统或容器需要 CAP_NET_RAW,或用 sudo
默认行为持续发送直到 Ctrl+C 结束;非交互场景必须加 -c,否则脚本会永远卡住

典型使用场景

  • 首次连通性验证:新交付的机器或网络段先 ping 网关与对端地址
  • 丢包与抖动观察:加 -c 与 -i 连续发一批小包,看 min/avg/max 与丢包率
  • 指定源地址排查:多网卡机器上用 -I 指定出口,确认策略路由是否按预期选路
  • MTU 与分片问题定位:用 -s 逐步增大报文并配合 -M 设置分片策略探测路径 MTU
  • 脚本健康探测:-c 2 -W 1 -q 组合,用退出码判断,输出简短便于记录
  • DNS 是否正常:直接 ping 域名,观察提示是解析失败还是请求超时

常用示例

常用示例
ping -c 4 8.8.8.8
ping -c 20 -i 0.2 10.0.0.5          # 高频小包看抖动
ping -c 4 -W 1 app.internal         # 单次等待 1 秒,脚本友好
ping -I eth1 -c 4 10.1.1.1          # 指定出口网卡
ping -q -c 100 192.168.1.1 | tail -3   # 只留统计摘要
ping -c 3 -s 1472 -M do 10.0.0.1    # 探测 1500 MTU 是否可用
if ping -c 2 -W 1 -q 10.0.0.9 >/dev/null; then echo up; else echo down; fi

输出读法

字段含义判断
icmp_seq回显请求序号丢包时会看到序号跳号
ttl剩余存活时间,随经过的路由跳数递减数值异常小说明绕路或对端系统类型不同
time往返时间 RTT内网通常低于 1ms,同城链路个位数到几十毫秒
packet loss丢包百分比持续非零说明链路不稳或对端限速
min/avg/max/mdev最小、平均、最大 RTT 与偏差mdev 大说明抖动明显,影响实时类业务
-W 与 -w 是两回事:-W 是每次等待应答的超时,-w 是整个命令运行的截止时间。脚本里常用 -c 2 -W 1,既限制次数又限制单次等待,最大耗时可控。
ping 的退出码可以用作判断依据(全部失败返回非 0),但要注意它只反映 ICMP 可达性。对方禁 ICMP 时会返回失败,此时应改用 nc -zv 主机 端口 或 curl 按实际业务端口验证。
不带参数直接 ping 会持续发送,在脚本或自动化工具里会挂住整个流程;连带宽都要留意——高频大包对生产链路是真实压力,排查抖动时用 -i 时不要小于 0.2 秒,除非明确知道影响范围。
IPv6 与路径跟踪:现代 iputils 把 IPv4 与 IPv6 合并到同一个命令,用 ping -6 指定协议;老系统上 IPv6 目标要用 ping6。定位「哪一跳开始丢包」用 traceroute 或 mtr,mtr 把 ping 的连续统计与逐跳路径合并展示,比先 ping 再 traceroute 更直观。
排查顺序建议:先 ping 网关确认本机出网正常,再 ping 目标地址区分是链路问题还是对端问题,最后按业务端口复验服务。网关通而对端不通时,接着看 ip route get 目标地址 的输出与沿途防火墙策略,比反复 ping 同一个地址有效得多。

易错点

  • ping 域名首先走 DNS,解析失败与网络不通的报错文本不同,先看提示再决定往哪里查
  • ping 不通不代表服务不可用:很多服务器与云安全组默认禁 ICMP,应用可能完全正常,需按端口复验
  • 脚本里忘记 -c 会让命令永不退出,拖死整条流水线
  • 把 -W 当作总超时使用:它是单次等待应答的时间,总超时要改用 -w
  • 用普通大包测 MTU 而没有 -M do 时,内核可能分片发送,测不出真实路径 MTU

数据来源与参考

  • man 8 ping(iputils 手册)

相关工具

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