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 不通别慌,按这个顺序查,一步步缩小范围:
- ping 网关:先确认自己家网络没问题
ping 192.168.1.1 - ping 公网 IP:比如 8.8.8.8,确认能上外网
- ping 商家网关:确认到机房的路通不通
- ping 你的服务器:这一步不通,问题在服务器或中间线路
- 换端口测试:ping 不通但 22/80 端口通,说明只是禁了 ICMP,机器没事
每一步通、下一步不通,问题就卡在中间那段。排查就是不断二分,这个思路适用于所有网络问题。
手机上怎么 ping
出门在外,服务器告警了,手机也能应急:
- 安卓:Termux 装个 ping,或者用"网络万用表"这类 App
- iOS:App Store 搜 ping 工具,一大把
- 微信小程序:也有在线 ping,凑合用
手机 ping 只能看个大概,精细排查还是得回电脑。但应急时知道"通还是不通",已经很有价值了。
一张表:ping 结果速查
| 现象 | 可能原因 | 下一步 |
|---|---|---|
| 延迟正常、0丢包 | 网络没问题 | 查服务端(Web服务、防火墙) |
| 延迟高、不丢包 | 线路差或拥堵 | 换时段测,考虑换线路/机房 |
| 延迟正常、偶尔丢包 | 轻微拥堵或抖动 | 观察,不影响使用就不用管 |
| 高延迟+高丢包 | 严重拥堵或线路故障 | MTR 定位,工单找客服 |
| 完全不通 | 断网或禁ping | 换端口测试,排除禁ping |
| 时通时断 | 线路抖动 | 长时间 ping 记录,拿数据说话 |
最后送你一句话:ping 是网络世界的"喂,有人吗",简单,但永远有用。别小看这一个命令,它是所有网络排查的起点。
小够的提醒
- 测多次再下结论:单次 ping 说明不了什么,至少连续测几十个包。
- 分时段测:怀疑晚高峰,白天和晚上各测一次对比。
- ping 被禁不代表机器挂了:很多商家默认禁 ping,先确认再说"机器失联"。
- 本地网络也可能是元凶:ping 不通先 ping 一下网关(路由器),排除自己家网络的问题,别冤枉商家。
- 记录结果:测速结果随手记下来,买下一台机器时有对比基准。
ping 是每个 VPS 用户的必修课。学会它,排查问题快一半,工单也写得更明白——把 ping 结果贴进工单,客服都得夸你专业。