web-dev-qa-db-ja.com

pingタイムアウトを1秒未満にするにはどうすればよいですか?

何千ものIPアドレスを実行し、それらがオンラインかどうかをチェックするWebアプリケーションがあります。基本的に、サーバーが応答に250ミリ秒を超える時間を使用する場合、この場合はオフラインと見なされます。 -Wパラメーターの最小値である1秒ではなく、約300ミリ秒後にpingコマンドをあきらめることができれば、大幅な時間の節約になります。

6
Hubro

そこに同様の質問が見つかりました、そして答えはfpingと呼ばれるpingの代替手段でした。多分それはあなたにいくつかの役に立つでしょう。 https://serverfault.com/questions/200468/how-can-i-set-a-short-timeout-with-the-ping-command

7
CreeDorofl

Pingのmanページから、1パケットだけを送信するのは-oのように見えます...

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
2
Joshkunz

MacMaverickで実行しています。 39秒で256アドレスにpingを実行します。つまり、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
$
0
Keith Sykora