![Linuxでデフォルトでpingが永遠に実行されるのはなぜですか? [閉鎖]](https://linux33.com/image/81405/Linux%E3%81%A7%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%81%A7ping%E3%81%8C%E6%B0%B8%E9%81%A0%E3%81%AB%E5%AE%9F%E8%A1%8C%E3%81%95%E3%82%8C%E3%82%8B%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E9%96%89%E9%8E%96%5D.png)
pingの基本動作を永久にpingに設定することにした設計決定の根拠は何ですか?
たとえば、次のデフォルトの使用法はアドレス127.0.0.1を永久にpingします。
$ ping 127.0.0.1
~によるとウィキペディア, ping は以下の目的で使用されます。
IP(インターネットプロトコル)ネットワーク上のホストの接続可能性をテストし、元のホストから宛先コンピュータに送信されたメッセージの往復時間を測定します。
両方のユースケース(近接時間と往復時間/遅延時間)の両方で永久にpingを送信することは最善の選択ではありません。予想する行動がとても奇妙だと思います。基本アクション。
ctrlちなみに、+などのややc洗練されていないだけでなく、シャットダウンのためのユーザーインターフェイスメカニズムがないことを考慮すると、これははるかに奇妙に見えます。
もちろん、pingの数はオプションでcountパラメータ(-c)を使用する場合は制限があります。たとえば、次のようになります。
$ ping -c 3 127.0.0.1
[編集する]:
これを明確にするために、誰かがコメントベースの回答ではなく、実際の開発者が基本的な動作を決定した理由に言及する一種の参照を提供できることを願っています。どの文書に文書やコードのコメントがありますか?
この質問はほとんどの意見に基づく質問なので、現在保留中であることが確認され、あまりそうしようと努力しています。
答え1
ホストAとBの間にパスを設定するとします。
ホストAでping Bを実行します。最初は動作しませんでした。
ホスト B または一部のファイアウォールでネットワーク構成を変更し、一度適用すると、変更がほぼすぐに適用されることがわかります。
だからこれは非常に実用的です。それ以外の場合は作成する必要がありますが、while ! ping B; do :; done
これはより多くの作業です。
結局、これらの問題はすべて「当時システム資源の限界のため」や「常識」で終わる場合が多い。この場合は「常識」です。
答え2
さまざまな実装、さまざまな選択。
-s
iputils-ping(Linux)では、pingはデフォルトで連続的ですが、Solarisではこの動作を取得するにはこのオプションを使用する必要があります。これは、ネットワークの状態を継続的に監視するのに役立ちます。
Solarisでは、ping
最初に返されたパケットの後に正常にシャットダウンするデフォルトの動作を使用すると、スクリプトで接続をテストするのがより簡単になりますが、iputils-pingを使用するとping -c1 -w15
(同じ)同じ動作を得るために使用する必要があります。
どちらも異なる状況で便利です。
さまざまな開発者、さまざまな選択。