为什么 ping 在 Linux 中默认永远运行?

use*_*535 7 linux command-line networking ping

将 ping 的默认行为永远设为 ping 的设计决策的基本原理是什么?

例如,以下基本用法将永远 ping 地址 127.0.0.1:

$ ping 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

根据维基百科,ping 用于:

测试主机在 Internet 协议 (IP) 网络上的可达性,并测量从原始主机发送到目标计算机并返回的消息的往返时间。

在这两个用例(可达性和往返时间/延迟)中,永远 ping 可能不是所需的行为,这就是为什么我觉得它是默认行为很奇怪。

作为旁注,考虑到没有提供退出的用户界面机制,这似乎更奇怪,除了ctrl+ 之类的东西c,这似乎有点不完善。

当然,如果使用计数参数 (-c),则可以选择限制ping的数量,例如:

$ ping -c 3 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

[编辑]:

为了澄清,我希望有人可以提供某种参考,其中提到实际开发人员决定默认行为的原因,而不是基于意见的答案。也许文档或代码注释存在哪个文档?

我认为这个问题目前被搁置,因为它主要是基于意见的,所以我试图让它不那么重要。

WeA*_*ion 4

假设您想要在主机 A 和 B 之间建立一条路由。

在主机 A 上,您运行 ping B。最初,它不起作用。

在主机 B 或某些防火墙上,您对网络配置进行了更改,一旦应用,您几乎立即就会看到您的更改生效了。

所以,这样做非常实用。否则你就必须写while ! ping B; do :; done,这是更多的工作。

最后所有这类问题一般都会以“因为当时系统资源限制”或者“常识”而告终。在这种情况下,这是“常识”。