ping命令入门

ping 是排查网络问题最常用的命令,网站打不开先 ping 一下。小够教你 ping 的基本用法、高级参数和结果解读,新手十分钟学会。

我是小够。

网站打不开、SSH 连不上,第一步该干嘛?先 ping 一下。ping 是网络排查的起点,十秒钟就能告诉你:是网络不通,还是服务挂了。

今天这篇是给纯新手的,十分钟学会。

ping 是干什么的

ping 向目标发几个小数据包(ICMP Echo),看能不能收到回复。类比一下:你朝山谷喊一声,听有没有回声。有回声,说明路是通的;没回声,要么路断了,要么对方不想理你。

基本用法

ping fusi.cc

默认会一直 ping,按 Ctrl+C 停。想指定次数:

# 只 ping 10 次
ping -c 10 fusi.cc

# Windows 下
ping -n 10 fusi.cc

# macOS 和 Linux 一样用 -c
ping -c 10 fusi.cc

三大系统的 ping 大同小异,记住 -c(次数)在 Linux/macOS、-n(次数)在 Windows 就行。

结果怎么看

一次典型的输出:

64 bytes from 1.2.3.4: icmp_seq=1 ttl=52 time=38.2 ms

关键看三个数:

  • time:往返延迟,单位毫秒。香港 30-50ms 正常,美国西海岸 150ms 左右正常,超过 300ms 就偏高了。
  • 丢包率:最后统计里的 packet loss。0% 最好,偶尔 1-2% 可以接受,持续 10% 以上说明网络有问题。
  • 延迟抖动:time 忽高忽低(38ms、210ms、45ms……),说明线路不稳定,比单纯延迟高更影响体验。

最后的统计行长这样:

10 packets transmitted, 10 received, 0% packet loss, time 9014ms
rtt min/avg/max/mdev = 36.1/38.2/45.3/2.8 ms

avg 是平均延迟,mdev 是抖动(越小越稳)。这两个数,是你判断线路质量的核心依据。

四个常见结论

1. ping 通、延迟正常 → 网络没问题

网站打不开,先 ping。如果 ping 正常,问题大概率在服务端(Web 服务挂了、防火墙拦了),去查服务状态,别怪网络。

2. ping 通但延迟很高 → 线路问题

参考《晚高峰》那篇:看看是不是高峰期拥堵,或者线路本身就差。换优化线路的商家,或者换机房。

3. ping 不通 → 两种可能

可能是网络真不通,也可能是对方禁了 ping(很多服务器为安全起见禁 ICMP)。别急着下结论,换端口测试:SSH 的 22 端口、网站的 80/443 端口通不通?

# 测试 TCP 端口通不通(比 ping 更准)
nc -zv 你的服务器IP 22
curl -I https://你的域名

4. 时通时断 → 最麻烦

间歇性丢包,可能是线路抖动、也可能是运营商 QoS。这时候 ping 100 个包看统计,或者上 MTR 看具体哪一跳在丢包。

进阶参数

掌握基本用法后,这几个参数很实用:

# -i 0.2:每 0.2 秒发一个包(更快发现问题,别太频繁)
ping -i 0.2 -c 50 你的服务器IP

# -s 1400:发大包,测试大包会不会丢(MTU 问题排查)
ping -s 1400 -c 10 你的服务器IP

# -W 2:超时 2 秒就判丢包(默认等太久)
ping -W 2 -c 10 你的服务器IP

注意:-i 小于 0.2 需要 root 权限,别拿去 flood 别人,ping 洪水是攻击行为。

持续监控:写个简单脚本

想长期观察某台机器的连通性,写个 cron 脚本:

#!/bin/bash
# 每 5 分钟 ping 20 个包,记到日志
LOG=/var/log/ping-monitor.log
LOSS=$(ping -c 20 -W 2 你的服务器IP | grep "packet loss" | awk '{print $6}')
echo "$(date '+%F %T') 丢包率: $LOSS" >> $LOG
# crontab 加一行
*/5 * * * * /root/ping-check.sh

跑几天,日志里一目了然:每天几点开始丢包、丢包率多少。拿着这个数据去找客服,比"我觉得晚上卡"有说服力一百倍。

进阶:ping 的局限

ping 只能告诉你"通不通、快不快",告诉不了你"断在哪"。想定位具体哪一段出问题,用 mtr:

# Debian / Ubuntu 先安装
sudo apt install mtr -y
mtr --report 你的服务器IP

MTR 会显示每一跳的延迟和丢包,瓶颈在哪一目了然。ping 是初筛,MTR 是确诊,两个配合用。

ping 不通的排查流程

ping 不通别慌,按这个顺序查,一步步缩小范围:

  1. ping 网关:先确认自己家网络没问题
    ping 192.168.1.1
    
  2. ping 公网 IP:比如 8.8.8.8,确认能上外网
  3. ping 商家网关:确认到机房的路通不通
  4. ping 你的服务器:这一步不通,问题在服务器或中间线路
  5. 换端口测试:ping 不通但 22/80 端口通,说明只是禁了 ICMP,机器没事

每一步通、下一步不通,问题就卡在中间那段。排查就是不断二分,这个思路适用于所有网络问题。

手机上怎么 ping

出门在外,服务器告警了,手机也能应急:

  • 安卓:Termux 装个 ping,或者用"网络万用表"这类 App
  • iOS:App Store 搜 ping 工具,一大把
  • 微信小程序:也有在线 ping,凑合用

手机 ping 只能看个大概,精细排查还是得回电脑。但应急时知道"通还是不通",已经很有价值了。

一张表:ping 结果速查

现象可能原因下一步
延迟正常、0丢包网络没问题查服务端(Web服务、防火墙)
延迟高、不丢包线路差或拥堵换时段测,考虑换线路/机房
延迟正常、偶尔丢包轻微拥堵或抖动观察,不影响使用就不用管
高延迟+高丢包严重拥堵或线路故障MTR 定位,工单找客服
完全不通断网或禁ping换端口测试,排除禁ping
时通时断线路抖动长时间 ping 记录,拿数据说话

最后送你一句话:ping 是网络世界的"喂,有人吗",简单,但永远有用。别小看这一个命令,它是所有网络排查的起点。

小够的提醒

  1. 测多次再下结论:单次 ping 说明不了什么,至少连续测几十个包。
  2. 分时段测:怀疑晚高峰,白天和晚上各测一次对比。
  3. ping 被禁不代表机器挂了:很多商家默认禁 ping,先确认再说"机器失联"。
  4. 本地网络也可能是元凶:ping 不通先 ping 一下网关(路由器),排除自己家网络的问题,别冤枉商家。
  5. 记录结果:测速结果随手记下来,买下一台机器时有对比基准。

ping 是每个 VPS 用户的必修课。学会它,排查问题快一半,工单也写得更明白——把 ping 结果贴进工单,客服都得夸你专业。