我正在 ping 远程 IP。我对Ping命令知之甚少。当我 ping IP 时,它会一直持续下去...我没有使用-t 选项。
Me$ ping 137.30.124.104
PING 137.30.124.104 (137.30.124.104): 56 data bytes
64 bytes from 137.30.124.104: icmp_seq=0 ttl=62 time=3.378 ms
64 bytes from 137.30.124.104: icmp_seq=1 ttl=62 time=3.825 ms
64 bytes from 137.30.124.104: icmp_seq=2 ttl=62 time=4.882 ms
64 bytes from 137.30.124.104: icmp_seq=3 ttl=62 time=1.822 ms
64 bytes from 137.30.124.104: icmp_seq=4 ttl=62 time=4.572 ms
....
64 bytes from 137.30.124.104: icmp_seq=290 ttl=62 time=3.273 ms
这是否意味着可以成功 ping 通 IP?或者说它正在尝试、失败并再次尝试?我怎样才能让它停止?
答案1
这就是 ping 命令的工作原理。您可以使用计数开关 来控制它-c
。
例子
$ ping -c 2 skinner
PING skinner.bubba.net (192.168.1.3) 56(84) bytes of data.
64 bytes from skinner.bubba.net (192.168.1.3): icmp_req=1 ttl=64 time=1.00 ms
64 bytes from skinner.bubba.net (192.168.1.3): icmp_req=2 ttl=64 time=1.13 ms
--- skinner.bubba.net ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 1.001/1.069/1.138/0.075 ms
产量细分
像这样的行意味着它已成功 ping 另一台主机:
64 bytes from skinner.bubba.net (192.168.1.3): icmp_req=2 ttl=64 time=1.13 ms
这些行显示了您的主机和您尝试 ping 的主机之间发生的每个“ping”的详细信息。
第六栏
包含该值的列icmp_req=2
告诉您与哪个 ICMP 数据包有关。该ping
命令生成网络数据包。有很多类型,您可能听说过 TCP 或 UDP 数据包。另一种类型是 ICMP。 ICMP 类似于手机网络中的 SMS。它的主要目的是通过网络进行命令和控制。
第七栏
有趣的第三列是TTL=64
. TTL - “又名生存时间”,意味着数据包在超时之前最多只会穿过 64 个节点。因此,如果系统距离您的系统超过 64 个“跳”,您将无法 ping 通它,除非您增加 TTL。
第8栏
此列显示 ping 发生所需的时间(以毫秒为单位)。该列看起来像这样:time=1.13 ms
。
其他列是相当不言自明的。
Ping 版本
不同的ping
命令在不同的 Unix 上的实现方式不同。所以需要注意版本。
$ ping -V
ping utility, iputils-sss20100418
我使用的是 Fedora 14 Linux 系统。
答案2
slm 的答案很好,但如果您只是想快速检查主机是否处于活动状态(并且可访问,并对 ping 做出响应),那么您可以使用fping
而不是ping
.它对主机执行 ping 操作,并等待一小段时间以获得响应。 fping
的退出代码报告成功或失败。
例如
cas@ganesh:~$ fping kali 卡利还活着 cas@ganesh:~$ echo $? 0 cas@ganesh:~$ fping 杜尔加 对于发送到杜尔加 (203.xx.xxx.14) 的 ICMP 回显,无法从 203.xx.xxx.1 访问 ICMP 主机 对于发送到杜尔加 (203.xx.xxx.14) 的 ICMP 回显,无法从 203.xx.xxx.1 访问 ICMP 主机 对于发送到杜尔加 (203.xx.xxx.14) 的 ICMP 回显,无法从 203.xx.xxx.1 访问 ICMP 主机 对于发送到杜尔加 (203.xx.xxx.14) 的 ICMP 回显,无法从 203.xx.xxx.1 访问 ICMP 主机 杜尔加无法到达 cas@ganesh:~$ echo $? 1
可以通过将 stderr 重定向到 /dev/null 来丢弃“ICMP 主机无法访问”消息。例如:
cas@ganesh:~$ fping durga 2>/dev/null
durga is unreachable