タイムアウトを指定しても、dig ユーティリティが無期限にハングするのはなぜですか?

タイムアウトを指定しても、dig ユーティリティが無期限にハングするのはなぜですか?

digパブリック IP アドレスを見つけるためにユーティリティを使用しています。

使用したコマンドは次のとおりです。

dig +short myip.opendns.com @resolver1.opendns.com

しかし、他のコンピュータでは時間がかかりすぎるという問題があったので、5秒後にタイムアウト:

dig +short +time=5 +tries=1 myip.opendns.com @resolver1.opendns.com

予想通り、一部のコンピュータでは失敗しますが、他のコンピュータでは決して完了しません。ハングするだけです...

これを予想どおり 5 秒後にタイムアウトするように修正する理由と方法をご存知ですか?

編集:

すでに試しましたtimeoutが、まだハングします。DNS の解決中に停止していると思います。たとえば、 はできませんping www.google.comが、 はできます172.217.20.4

答え1

一部のユーティリティでアプリケーションのタイムアウトを使用する場合、接続の問題が発生すると、外部からの「強制」によってアプリケーションが自動的に停止することが必ずしも保証されるわけではありません。

ハングアップする問題のある状況に備えて、しばらくしてから外部ユーティリティを使用して強制終了します。

例えば:

timeout 5 dig +short +time=5 +tries=1 myip.opendns.com @resolver1.opendns.com

からman timeout

名前トップ

   timeout - run a command with a time limit

概要トップ

   timeout [OPTION] DURATION COMMAND [ARG]...
   timeout [OPTION]

説明トップ

   Start COMMAND, and kill it if still running after DURATION.

関連情報