ping 参数分几类
iputils 版 ping 的参数大致分四类:控制发包节奏(包数、间隔、总时限)、控制报文本身(载荷大小、DF 位、TTL、时间戳选项)、控制来源与路径(源接口、源地址、记录路由)、控制输出形式(只留汇总、带时间戳、不做名称解析)。把这四类记住,现场就不用翻手册;Windows 自带 ping 的参数语义完全不同,不能照抄。
基本信息
| 工具与平台 | iputils ping(Linux 主流发行版);busybox 精简版只实现部分参数 |
|---|---|
| 单位约定 | -i 间隔、-W 单包超时、-w 总时限均为秒;Windows 的 -w 是毫秒 |
| 权限要求 | 普通用户可用;-i 小于 0.2 秒、洪泛模式需要 root |
| 常见搭配 | 长测配 -D 时间戳与 -q 汇总,MTU 探测配 -M do 与 -s |
参数全表
| 参数 | 作用 | 示例 |
|---|---|---|
| -c N | 发送 N 个包后停止,便于脚本判断退出码 | ping -c 10 8.8.8.8 |
| -i S | 设置发包间隔,默认每秒 1 包,小于 0.2 秒需 root | ping -i 0.2 8.8.8.8 |
| -W S | 等待单个回包的超时时间 | ping -W 1 10.0.0.5 |
| -w S | 限制整个命令的最长运行时间,到点强制停止 | ping -w 5 10.0.0.5 |
| -s N | 指定载荷字节数,默认 56,配合 DF 位可探 MTU | ping -s 1400 10.0.0.5 |
| -I 接口或地址 | 指定源接口或源地址,用于多网卡主机验证路径 | ping -I eth0 10.0.0.5 |
| -M do | 禁止分片,用于路径 MTU 探测 | ping -M do -s 1472 10.0.0.5 |
| -t TTL | 手工设置 TTL,可用于粗略判断经过的跳数 | ping -t 2 10.0.0.5 |
| -D | 给每行输出加 UNIX 时间戳,长测复盘必备 | ping -D -c 100 10.0.0.5 |
| -q | 只输出汇总行,长测时避免刷屏 | ping -q -c 1000 8.8.8.8 |
| -n | 不做反向域名解析,输出更快也更可靠 | ping -c 3 -n 8.8.8.8 |
| -R | 记录路由,需路径设备配合,现代网络多数不生效 | ping -R -c 2 10.0.0.5 |
| -A | 自适应间隔,快速返回时自动提高发包频率 | ping -A -c 100 10.0.0.5 |
| -f / -l N | 洪泛与预加载,会瞬间打满链路,仅限受控测试 | ping -f -c 1000 目标 |
典型使用场景
- 脚本巡检:用 -c 与 -W 让每个目标在固定时间内给出明确结论与退出码
- 抖动采样:用 -i 0.2 或 -i 0.5 加快采样,快速看出时延波动
- 长时取证:用 -D 落盘保留时间戳,事后与变更、告警时间线对齐
- MTU 探测:用 -M do 与 -s 二分,找出路径能通过的最大载荷
- 多网卡验证:用 -I 指定源接口,确认流量走的是期望那张网卡
组合用法
组合用法
ping -c 3 -W 1 -n 10.0.0.5 # 脚本巡检:3 包、单包超时 1 秒、不解析
ping -q -w 30 -i 0.2 10.0.0.5 # 30 秒内持续采样,只输出汇总行
ping -M do -s 1472 -c 2 10.0.0.5 # 验证 1500 字节不分片能否通过
ping -D -i 0.5 -c 3600 8.8.8.8 > /tmp/long.log # 半小时长测并落盘-W 与 -w 常被混用:前者是等单个回包的耐心,后者是整个命令的总时限。写脚本时两个都给,才既有单包超时又能保证整体不挂死。
-R 记录路由依赖路径上每台设备都愿意写入地址,公网设备普遍关闭该能力,因此现代网络中它大多只返回本机与对端,不应据此判断路径。
退出码同样有含义:全部回包成功返回 0,存在丢包返回 1,名称解析失败或参数非法返回 2。脚本里应该判断退出码,靠解析输出文本容易受系统语言与版本差异影响。
-n 关闭反向解析后输出更快,长测和大批量巡检一律加上;反之,想把地址翻译成设备名做资产核对时再去掉它。
-f 洪泛与 -l 预加载会瞬间灌满链路,可能被上游设备判定为攻击,只允许在受控的测试环境短时使用,生产网络禁止。