如何才能使 ping 超时时间低于 1 秒?

如何才能使 ping 超时时间低于 1 秒?

我有一个 Web 应用程序,它运行数千个 IP 地址并检查它们是否在线。基本上,如果服务器响应时间超过 250 毫秒,在我们的情况下,它就被视为离线。如果我们可以让 ping 命令在大约 300 毫秒后放弃,而不是 -W 参数的最小值 1 秒,那么将节省大量时间。

答案1

发现了一个类似的问题,答案是 ping 的替代方案,称为 fping。也许它会对你有用。 https://serverfault.com/questions/200468/how-can-i-set-a-short-timeout-with-the-ping-command

答案2

从 ping 的手册页来看,-o 似乎只发送 1 个数据包......

ping -W 250 -o

这应该会返回得更快,-W 参数以毫秒为单位,因此应该发送 1 个数据包并仅等待 250 毫秒即可获得响应。

编辑你确定吗?:

$ ping -W 250 -o google.com
PING google.com (74.125.224.178): 56 data bytes
64 bytes from 74.125.224.178: icmp_seq=0 ttl=51 time=18.850 ms
--- google.com ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 18.850/18.850/18.850/0.000 ms

答案3

在 Mac Maverick 上运行。在 39 秒内 ping 256 个地址,即 151ms/ping。

$cat netcheck
i=255
while
  test $i -ge 0
do
  address=192.168.1.$i
  if
    ping -i .1 -c 1 -W 50 $address > /dev/null
  then
    echo $address
  fi
  let i=$i-1
done
$time ./netcheck
192.168.1.255
192.168.1.254
192.168.1.241
192.168.1.216
192.168.1.174
192.168.1.148
192.168.1.108
192.168.1.102
192.168.1.0

real    0m38.653s
user    0m0.369s
sys 0m0.616s
$

相关内容