实战
ping example.com
ping -c 4 example.com # 4 次后停
ping -i 0.5 example.com # 间隔 0.5 秒
ping -W 2 example.com # 单包超时 2 秒
ping -s 1024 example.com # 大包测试
ping6 ipv6.google.com # IPv6
ping 192.168.1.1 # 直接 IP
看什么
PING example.com (93.184.216.34) 56(84) bytes of data.
64 bytes from 93.184.216.34: icmp_seq=1 ttl=56 time=42.3 ms
64 bytes from 93.184.216.34: icmp_seq=2 ttl=56 time=41.8 ms
...
--- example.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3008ms
rtt min/avg/max/mdev = 41.5/42.0/42.6/0.4 ms
关键看:
- 是否有回包(
time=出现) - 丢包率(
X% packet loss) - 延迟(
time=数字)
常用参数
| 参数 | 含义 |
|---|---|
-c N |
发 N 个包后停 |
-i S |
包间隔 S 秒(可小数) |
-W N |
等回包超时 N 秒 |
-w N |
整个 ping 超时 N 秒 |
-s N |
包大小 N 字节 |
-q |
安静(最后才出汇总) |
-n |
不解析 IP 为名字 |
-D |
显示时间戳 |
-f |
flood(快速 ping,仅 root) |
实战场景
# 测网关
ping -c 4 $(ip route | awk '/default/{print $3}')
# 多目标快速试
for h in google.com baidu.com github.com; do
if ping -c 1 -W 1 "$h" >/dev/null 2>&1; then
echo "$h ✓"
else
echo "$h ✗"
fi
done
# 持续监控(每 5 分钟 1 次)
ping -i 300 example.com | while read line; do
echo "$(date) - $line"
done > ping.log
ping 不通可能的原因
- 对方真挂了
- 中间网络断
- 对方禁了 ICMP 响应(很常见——很多服务器把 ping 关了)
- 防火墙拦
- DNS 不解析(用 IP 试)
ping 不通 ≠ 服务不通——很多服务器禁 ping 但 80 端口照样开。用
curl -I或nc -zv测真正的服务端口。
ICMP 阻塞时的替代
nc -zv example.com 443 # 测 TCP 443
curl -I https://example.com # 测 HTTPS
坑
- ping 用 ICMP——TCP 服务是否能连完全是另一回事
- macOS / Windows 的 ping 默认行为不同(包数、间隔)
- 高 RTT 的链路 ping 不丢包不等于带宽够——只能说连通性 OK