¿Por qué la utilidad de excavación se bloquea indefinidamente incluso cuando se especifica el tiempo de espera?

¿Por qué la utilidad de excavación se bloquea indefinidamente incluso cuando se especifica el tiempo de espera?

Estoy usando diguna utilidad para encontrar una dirección IP pública.

El comando que utilicé es:

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

pero tuve un problema ya que en otras computadoras tomó mucho tiempo, así que agregué untiempo de espera después de 5 segundos:

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

y en algunas falla como se esperaba, pero en otras computadoras nunca termina. Lo único que hace es colgar...

¿Alguna idea de por qué y cómo se puede solucionar esto para que se agote el tiempo de espera después de 5 segundos como se esperaba?

EDITAR:

Ya lo intenté timeoutpero todavía se cuelga. Creo que se bloquea al resolver DNS. Por ejemplo, no puedo ping www.google.com, pero puedo 172.217.20.4.

Respuesta1

En cuanto al uso de tiempos de espera de aplicación en algunas utilidades, cuando hay problemas de conectividad, no siempre se garantiza que la aplicación se detendrá por sí sola con alguna "coerción" externa.

Usaría una utilidad externa para eliminarlo después de un tiempo, por si acaso, para las situaciones problemáticas en las que se cuelga.

Como en:

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

Deman timeout

NOMBRE arriba

   timeout - run a command with a time limit

SINOPSIS arriba

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

DESCRIPCIÓN arriba

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

información relacionada